c语言中实现循环结构的控制语句有哪些?
时间:2020-07-21 10:24
c语言中实现循环结构的控制语句有:while语句、do-while语句和for语句,一般形式为“while(表达式){语句块}”,“do{语句块}while(表达式);”,“for(表达式1; 表达式2; 表达式3){语句块}”。 所谓循环(Loop),就是重复地执行同一段代码,例如要计算 1+2+3+……+99+100 的值,就要重复进行99次加法运算。 while循环 while循环的一般形式为: 意思是,先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。 我们通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。 用 while 循环计算1加到100的值: 运行结果: 代码分析: 1) 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。 2) 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。 3) 重复执行步骤 2)。 4) 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。 while 循环的整体思路是这样的:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。 如果循环条件中不包含变量,会发生什么情况呢? 1) 循环条件成立时的话,while 循环会一直执行下去,永不结束,成为“死循环”。例如: 运行程序,会不停地输出“1”,直到用户强制关闭。 2) 循环条件不成立的话,while 循环就一次也不会执行。例如: 运行程序,什么也不会输出。 再看一个例子,统计从键盘输入的一行字符的个数: 运行结果: 本例程序中的循环条件为 do-while循环 除了while循环,在C语言中还有一种 do-while 循环。 do-while循环的一般形式为: do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。 用do-while计算1加到100的值: 运行结果: 注意 while循环和do-while各有特点,大家可以适当选择,实际编程中使用while循环较多。 除了while循环,C语言中还有 for 循环,它的使用更加灵活,完全可以取代 while 循环。 for循环 上面我们使用 while 循环来计算1加到100的值,代码如下: 可以看到,语句①②③被放到了不同的地方,代码结构较为松散。为了让程序更加紧凑,可以使用 for 循环来代替,如下所示: 在 for 循环中,语句①②③被集中到了一起,代码结构一目了然。 for 循环的一般形式为: 它的运行过程为: 1) 先执行“表达式1”。 2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。 3) 执行完循环体后再执行“表达式3”。 4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。 上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。 “表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。 for循环的执行过程可用下图表示: 我们再来分析一下“计算从1加到100的和”的代码: 运行结果: 代码分析: 1) 执行到 for 语句时,先给 i 赋初值1,判断 i<=100 是否成立;因为此时 i=1,i<=100 成立,所以执行循环体。循环体执行结束后(sum的值为1),再计算 i++。 2) 第二次循环时,i 的值为2,i<=100 成立,继续执行循环体。循环体执行结束后(sum的值为3),再计算 i++。 3) 重复执行步骤 2),直到第101次循环,此时 i 的值为101,i<=100 不成立,所以结束循环。 由此我们可以总结出for循环的一般形式: for循环中的三个表达式 for 循环中的“表达式1(初始化条件)”、“表达式2(循环条件)”和“表达式3(自增或自减)”都是可选项,都可以省略(但分号 1) 修改“从1加到100的和”的代码,省略“表达式1(初始化条件)”: 可以看到,将 2) 省略了“表达式2(循环条件)”,如果不做其它处理就会成为死循环。例如: 相当于: 所谓死循环,就是循环条件永远成立,循环会一直进行下去,永不结束。死循环对程序的危害很大,一定要避免。 3) 省略了“表达式3(自增或自减)”,就不会修改“表达式2(循环条件)”中的变量,这时可在循环体中加入修改变量的语句。例如: 4) 省略了“表达式1(初始化语句)”和“表达式3(自增或自减)”。例如: 相当于: 5) 3个表达式可以同时省略。例如: 相当于: 6) “表达式1”可以是初始化语句,也可以是其他语句。例如: 7) “表达式1”和“表达式3”可以是一个简单表达式也可以是逗号表达式。 或: 8) “表达式2”一般是关系表达式或逻辑表达式,但也可是数值或字符,只要其值非零,就执行循环体。例如: 又如: 相关推荐:《c语言教程》 以上就是c语言中实现循环结构的控制语句有哪些?的详细内容,更多请关注gxlsystem.com其它相关文章!while(表达式){
语句块
}
#include <stdio.h>
int main(){
int i=1, sum=0;
while(i<=100){
sum+=i;
i++;
}
printf("%d\n",sum);
return 0;
}
5050
#include <stdio.h>
int main(){
while(1){
printf("1");
}
return 0;
}
#include <stdio.h>
int main(){
while(0){
printf("1");
}
return 0;
}
#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:c.biancheng.net↙
Number of characters: 15
getchar()!='\n',
其意义是,只要从键盘输入的字符不是回车就继续循环。循环体n++;
完成对输入字符个数计数。do{
语句块
}while(表达式);
#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);
最后的分号;
,这个必须要有。#include <stdio.h>
int main(){
int i, sum=0;
i = 1; //语句①
while(i<=100 /*语句②*/ ){
sum+=i;
i++; //语句③
}
printf("%d\n",sum);
return 0;
}
#include <stdio.h>
int main(){
int i, sum=0;
for(i=1/*语句①*/; i<=100/*语句②*/; i++/*语句③*/){
sum+=i;
}
printf("%d\n",sum);
return 0;
}
for(表达式1; 表达式2; 表达式3){
语句块
}
#include <stdio.h>
int main(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
printf("%d\n",sum);
return 0;
}
5050
for(初始化语句; 循环条件; 自增或自减){
语句块
}
;
必须保留)。int i = 1, sum = 0;
for( ; i<=100; i++){
sum+=i;
}
i=1
移到了 for 循环的外面。for(i=1; ; i++) sum=sum+i;
i=1;
while(1){
sum=sum+i;
i++;
}
for( i=1; i<=100; ){
sum=sum+i;
i++;
}
for( ; i<=100 ; ){
sum=sum+i;
i++;
}
while(i<=100){
sum=sum+i;
i++;
}
for( ; ; ) 语句
while(1) 语句
for( sum=0; i<=100; i++ ) sum=sum+i;
for( sum=0,i=1; i<=100; i++ ) sum=sum+i;
for( i=0,j=100; i<=100; i++,j-- ) k=i+j;
for( i=0; (c=getchar())!='\n'; i+=c );
for( ; (c=getchar())!='\n' ; )
printf("%c",c);