while循环
基本结构
C语言中的while
循环是一种基本的循环控制结构,它允许程序重复执行一段代码块,直到指定的条件不再满足为止。while
循环的语法结构如下:
cpp
while (condition) {
// 循环体
// 在这里编写要重复执行的代码
}
condition
是循环继续执行的条件。在每次循环开始前,程序都会检查这个条件。如果条件为真(即,条件表达式的值为非零),则执行循环体内的代码块;如果条件为假(即,条件表达式的值为零),则跳过循环体,继续执行循环之后的代码。- 循环体是
{}
中的代码块,它包含了每次循环时都要执行的语句。
示例:打印1到10之间的整数
cpp
#include <stdio.h>
int main() {
int i = 1; // 初始化计数器 第一个表达式:条件的初始值
while (i <= 10) { // 循环条件 第二个表达式:条件的临界值
printf("%d ", i); // 打印当前值
i++; // 更新计数器,为下一次循环做准备 第三个表达式:条件发生变化
}
return 0;
}
输出将是:
cpp
1 2 3 4 5 6 7 8 9 10
注意事项
-
无限循环 :如果条件始终为真,或者循环体内部没有更改条件以使其最终变为假,
while
循环将变成无限循环。这通常是一个错误,应当避免。 -
条件更新:确保在循环体内部更新条件表达式中使用的变量,以避免无限循环。
-
初始化:在循环开始前初始化所有在条件表达式中使用的变量。
-
循环控制语句 :可以使用
break
语句提前退出while
循环,使用continue
语句跳过循环体中剩余的代码,直接进入下一次循环的条件判断。
do...while循环:
基本结构:
C语言中的do...while
循环是另一种循环控制结构,它与while
循环类似,但有一个关键的区别:do...while
循环至少会执行一次循环体内的代码,即使初始条件为假。这是因为do...while
循环的条件检查是在循环体的末尾进行的,而不是在循环体的开始。
cpp
do {
// 循环体
// 在这里编写要重复执行的代码
} while (condition);
condition
是循环继续执行的条件。但是,与while
循环不同,do...while
循环首先执行循环体,然后再检查条件。如果条件为真(即,条件表达式的值为非零),则重复执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
示例:打印1到10之间的整数
cpp
#include <stdio.h>
int main() {
int i = 1; // 初始化计数器
do {
printf("%d ", i); // 打印当前值
i++; // 更新计数器
} while (i <= 10); // 循环条件
return 0;
}
输出将是:
cpp
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
循环的语法结构如下:
cpp
for (初始化表达式; 循环条件; 更新表达式) {
// 循环体
// 在这里编写要重复执行的代码
}
- 初始化表达式:在循环开始前执行,通常用于初始化一个或多个循环控制变量。它只执行一次。
- 循环条件:在每次循环迭代开始前检查。如果条件为真(即,条件表达式的值为非零),则执行循环体;如果条件为假(即,条件表达式的值为零),则退出循环。
- 更新表达式:在每次循环迭代结束时执行,通常用于更新循环控制变量的值,以便在下一次迭代时重新评估循环条件。
示例:打印1到10之间的整数
cpp
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
}
return 0;
}
输出将是:
cpp
1 2 3 4 5 6 7 8 9 10
在这个例子中,i = 1
是初始化表达式,它只执行一次,用于初始化循环控制变量i
。i <= 10
是循环条件,它在每次迭代开始前检查。如果i
的值小于或等于10,则执行循环体(即,打印i
的值)。i++
是更新表达式,它在每次迭代结束时执行,用于将i
的值增加1。
注意事项
- 初始化变量 :
for
循环的初始化表达式中声明的变量(如上面的int i = 1;
)具有块作用域,这意味着它们只在for
循环的块内部可见。 - 空表达式 :初始化表达式、循环条件和更新表达式都可以为空(即,只包含分号
;
),但通常不推荐这样做,因为它可能会导致代码难以理解和维护。 - 循环控制语句 :与
while
和do...while
循环一样,for
循环中也可以使用break
和continue
语句来控制循环的流程。break
语句用于立即退出循环,而continue
语句用于跳过当前迭代中剩余的代码,直接进入下一次迭代的条件判断。
break跳出循环:
计算捐献总数并在数据达到10万之后结束计数
cpp
#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整除的数
cpp
#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;
}