当前位置: 首页 > news >正文

C语言——循环结构:while、do...while、for

while循环

 基本结构

C语言中的while循环是一种基本的循环控制结构,它允许程序重复执行一段代码块,直到指定的条件不再满足为止。while循环的语法结构如下:

while (condition) {  // 循环体  // 在这里编写要重复执行的代码  
}
  • condition 是循环继续执行的条件。在每次循环开始前,程序都会检查这个条件。如果条件为真(即,条件表达式的值为非零),则执行循环体内的代码块;如果条件为假(即,条件表达式的值为零),则跳过循环体,继续执行循环之后的代码。
  • 循环体是{}中的代码块,它包含了每次循环时都要执行的语句。
示例:打印1到10之间的整数
#include <stdio.h>  int main() {  int i = 1; // 初始化计数器   第一个表达式:条件的初始值while (i <= 10) { // 循环条件  第二个表达式:条件的临界值printf("%d ", i); // 打印当前值  i++; // 更新计数器,为下一次循环做准备  第三个表达式:条件发生变化}  return 0;  
}

输出将是:

1 2 3 4 5 6 7 8 9 10
注意事项
  1. 无限循环:如果条件始终为真,或者循环体内部没有更改条件以使其最终变为假,while循环将变成无限循环。这通常是一个错误,应当避免。

  2. 条件更新:确保在循环体内部更新条件表达式中使用的变量,以避免无限循环。

  3. 初始化:在循环开始前初始化所有在条件表达式中使用的变量。

  4. 循环控制语句:可以使用break语句提前退出while循环,使用continue语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断。

do...while循环:

基本结构:

C语言中的do...while循环是另一种循环控制结构,它与while循环类似,但有一个关键的区别:do...while循环至少会执行一次循环体内的代码,即使初始条件为假。这是因为do...while循环的条件检查是在循环体的末尾进行的,而不是在循环体的开始。

do {  // 循环体  // 在这里编写要重复执行的代码  
} while (condition);
  • condition 是循环继续执行的条件。但是,与while循环不同,do...while循环首先执行循环体,然后再检查条件。如果条件为真(即,条件表达式的值为非零),则重复执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
示例:打印1到10之间的整数
#include <stdio.h>  int main() {  int i = 1; // 初始化计数器  do {  printf("%d ", i); // 打印当前值  i++; // 更新计数器  } while (i <= 10); // 循环条件  return 0;  
}

输出将是:

1 2 3 4 5 6 7 8 9 10
注意事项
  • 至少执行一次:由于do...while循环的特性,循环体内的代码至少会执行一次,无论条件是否满足。
  • 条件更新:与while循环一样,确保在循环体内部更新条件表达式中使用的变量,以避免无限循环(尽管在这个特定结构中,即使条件永远不满足,循环体也至少会执行一次)。
  • 初始化:在循环开始前初始化所有在条件表达式中使用的变量。
  • 循环控制语句:与while循环相同,可以使用break语句提前退出do...while循环,使用continue语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断(但由于do...while循环至少执行一次,所以continue语句不会阻止循环体的首次执行)。

for循环

基本结构:

C语言中的for循环是一种非常强大且灵活的循环控制结构,它允许你指定初始化表达式、循环条件以及每次循环迭代结束时执行的更新表达式。for循环的语法结构如下:

for (初始化表达式; 循环条件; 更新表达式) {  // 循环体  // 在这里编写要重复执行的代码  
}
  • 初始化表达式:在循环开始前执行,通常用于初始化一个或多个循环控制变量。它只执行一次。
  • 循环条件:在每次循环迭代开始前检查。如果条件为真(即,条件表达式的值为非零),则执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
  • 更新表达式:在每次循环迭代结束时执行,通常用于更新循环控制变量的值,以便在下一次迭代时重新评估循环条件。
示例:打印1到10之间的整数
#include <stdio.h>  int main() {  for (int i = 1; i <= 10; i++) {  printf("%d ", i);  }  return 0;  
}

输出将是:

1 2 3 4 5 6 7 8 9 10

在这个例子中,i = 1是初始化表达式,它只执行一次,用于初始化循环控制变量ii <= 10是循环条件,它在每次迭代开始前检查。如果i的值小于或等于10,则执行循环体(即,打印i的值)。i++是更新表达式,它在每次迭代结束时执行,用于将i的值增加1。

注意事项
  • 初始化变量for循环的初始化表达式中声明的变量(如上面的int i = 1;)具有块作用域,这意味着它们只在for循环的块内部可见。
  • 空表达式:初始化表达式、循环条件和更新表达式都可以为空(即,只包含分号;),但通常不推荐这样做,因为它可能会导致代码难以理解和维护。
  • 循环控制语句:与whiledo...while循环一样,for循环中也可以使用breakcontinue语句来控制循环的流程。break语句用于立即退出循环,而continue语句用于跳过当前迭代中剩余的代码,直接进入下一次迭代的条件判断。

break跳出循环:

计算捐献总数并在数据达到10万之后结束计数

#include<stdio.h>int main()
{int numPerson;int dnoateMoney;int money = 0;for(numPerson = 1;numPerson <= 1000;numPerson++){printf("请输入你要捐献的金额:\n");scanf("%d",&dnoateMoney);money = money + dnoateMoney;if(money >= 100000){printf("已经捐献了%d元了,达到10万元\n",money);break;  }}printf("一共有%d个人捐献,平均每个人捐献了%f元\n",numPerson,(float)money/numPerson);return 0;
}

 continue结束本次循环:

输出100—200中间能被3整除的数

#include<stdio.h>int main()
{int number;int times = 0;for(number = 100;number <= 200;number++){if(number %3 != 0){  //除3取余后不等于0,说明不能被3整除,跳出本次for循环,不进行输出continue;}times++;printf("%d\n",number);}printf("100-200中能被3整除的数有%d个\n",times);return 0;
}

http://www.lryc.cn/news/398925.html

相关文章:

  • C#实现最短路径算法
  • Python函数 之 匿名函数
  • 深入解析 Mybatis 中 Mapper 接口的实现原理
  • 微信小程序获取用户头像
  • uniapp小程序连接蓝牙设备
  • AI大模型推理过程与优化技术深度剖析
  • Dubbo 核心概念介绍
  • 练习 6.7:⼈们 在为练习 6.1 编写的程序中,再创建两个表⽰⼈的字典,然后将这三个字典都存储在⼀个名为 people 的列表中。
  • 星环科技知识平台TKH:引领企业构建高效AI基础设施,加速数智化转型新纪元
  • 嵌入式板级支持包(BSP)80道面试题及参考答案(3万字长文)
  • 如何找回误删的文件?4个常用文件恢复方法!
  • 在大型企业级应用中,如何优化 XML 数据的存储和检索效率,以满足高并发访问需求?
  • win10 A4000 下使用Xinference来进行大模型的推理测试
  • 【9-2:代码规范】
  • std::filesystem::current_path().generic_string()的bug
  • Python excel知识库批量模糊匹配的3种方法实例(fuzzywuzzy\Gensim)
  • stm32使用单通道规则组ADC
  • [python][whl]causal-conv1d的python模块在windows上whl文件下载
  • 介绍 CM3leon,一个更高效、最先进的文本和图像生成模型
  • HTTPS和HTTP有哪些区别
  • Docker 安装 PostgreSQL
  • 实践致知第12享:如何新建一个Word并设置格式
  • Rust vs Go: 特点与应用场景分析
  • 2024的开放式耳机排行榜,看这六个耳机选购的小Tips
  • JAVA-报表模糊搜索询易实现
  • 牛客 7.13 月赛(留 C逆元)
  • FPGA之术语
  • WPF透明置顶窗口wine适配穿透问题解决
  • 浅析Kafka Streams中KTable.aggregate()方法的使用
  • java word转pdf、word中关键字位置插入图片 工具类