循环(Loop),在C语言中,是对相同的逻辑做重复的操作,也就是重复地执行相同的一段代码。
while循环
while循环的一般形式为:
while(表达式){
语句块
}
其中表达式称为循环条件,语句块称为循环体。
解释:
首先计算表达式的值,如果为真(非 0),则执行循环体内的语句;执行完循环体内的语句后,再次计算表达式,如果为真(非 0),则执行循环体内的语句;
...
这个过程会一直重复,直到表达的值为假(即 0),就会跳出循环体,不再执行循环体内的语句,退出循环体
我们来练习一下小学都做过的一道数学题:
求 1 + 2 + 3 +...+ 99 + 100 = ?
#include <stdio.h>
int main(){
int i=1, sum=0;
while(i<=100){
sum+=i;
i++;
}
printf("%d\n",sum);
return 0;
}
运行结果:
5050
代码分析:
程序运行到while语句时,因为 i=1,i<=100 的值为真,所以执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。
接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。
重复执行步骤 2)。
当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。
例子:用户输入一行字符,计算一共输入多少个。
#include <stdio.h>
int main(){
int n=0;
printf("Input a string:");
while(getchar()!='\n') n++;
printf("Number of characters: %d\n", n);
return 0;
}
运行结果:
Input a string:crabshell.sinaapp.com↙
Number of characters: 21
getchar() 之前篇幅有介绍过是用于输入一个字符, getchar() != "\n",表示只要键盘输入的不是回车就会继续执行循环。
do while循环
do-while循环的一般形式为:
do{
语句块
}while(表达式);
do while循环 和 while循环 区别于:
它首先会执行循环体,然后再判断表达式是否为真;
如果为真,则继续循环;如果为假,则终止循环。
所以 do while循环 无论如何都会至少执行一次循环体。
用do while 来重写 求 1 + 2 + 3 +...+ 99 + 100 = ?
#include <stdio.h>
int main(){
int i=1, sum=0;
do{
sum+=i;
i++;
}while(i<=100);
printf("%d\n", sum);
return 0;
}
运行结果:
5050
最后值得注意的是:while(i<=100);最后的分号** ;**,这个必须要有。