C程序设计(第五版) 第五章 知识总结
循环结构知识总结
一、while语句实现循环
while后面的语句称为循环体(花括号内的复合语句),while语句的一般形式:
while (表达式) 语句 //注意表达式末尾没有分号
其中,语句就是循环体。语句只能是一个语句,可以是一个简单的语句,也可以是复合语句。循环条件就是上面的”表达式“,也成为:循环条件表达式。
只要当循环条件表达式为真(给定的条件成立),就执行循环条件。
注意:
1.while 循环的特点是先判断条件表达式,后执行循环体语句。
2.循环体如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现。如果不加花括号,则while语句的范围只到while后第一个分号处。
3.不要忽略给变量赋初值,否则结果不正确。
4.再循环体中应有使循环趋向于结束的语句。否则,循环会永远不结束。
二、do....while循环
do...while一般形式:
do 语句 while (表达式); //注意表达式末尾有分号
do...while语句执行过程:先执行循环体,然后检查条件是否成立,若成立,再执行循环体。
注意:
do...while 语句特点是:先无条件地执行循环体,然后判断循环条件是否成立。如果while后面的表达式一开始就为假(0值)时,while循环和do...while循环结果不一样。例如:
while循环:
int i,sum=0;
i=11;
while(i<=10){
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
结果是:sum=0
do...while循环:
int i,sum=0;
i=11;
do{
sum=sum+i;
i++;
}while(i<=10);
printf("sum=%d\n",sum);
结果是:sum=11
三、for循环语句
for语句不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况。for语句的一般形式:
for(表达式1;表达式2;表达式3)
语句
表达式1:循环初始值,可为零个、一个或多个变量设置初值。
表达式2:循环条件表达式,在每次执行循环体之前先执行此表达式。再决定是否执行循环。
表达式3:循环变量增值,它在执行完循环体后才进行的。
注意:
1.“表达式1”可省略,不设置初值,但是表达式1后的分号不可省略。但是,为了让循环正常,应在for语句之前给循环变量赋初值。
i=1;
for(;i<=100;i++) sum=sum+i;
2.“表达式2”可省略,不用表达式2作为循环条件表达式。因此,循环会无休止进行下去。
for(i=1; ;i++) sum=sum+i;
3.“表达式3”可省略,但为了循环正常结束,要在循环体中加入循环变量增值。
for(i=1;i<100;){
sum=sum+i;
i++;
}
4.表达式1,3可省略,但是要在for语句前给循环变量赋初值,循环体中使用变量增值。
i=1;
for(;i<=100;){
sum=sum+i;
i++;
}
5.3个表达式都可省略,表示无休止地执行循环体语句。
for(; ;) printf("test");
6.“表达式1”变量初值也可以是与循环变量无关的其他表达式。同理,”表达式3“也可以。但必须要使循环能正常执行。
i=1;
for (sum=0;i<=100;i++) sum=sum+i;
7.”表达式1和3“也可以是逗号表达式,包含一个以上的简单表达式。
for (sum=0,i=1;i<=100;i++) sum=sum+i;
8.“表达式2”也可以是数值表达式或字符表达式,只要其值为非0,就能继续执行循环体。如:
for (i=0;(c=getchar())!='\n';i+=c);
在表达式2中先接受一个字符赋给c,判断此字符是不是等于‘\n(换行符)‘,如果不等于,就执行循环体,将他们的ASCII码相加。如果等于,则跳出循环。此处循环体为空语句。
9.C99中允许在for语句的“表达式1”中定义变量并赋初值。
for(int i=1;i<=100;i++) sum=sum+i;
10.无论省略哪一个表达式,分号都不能省略。
四、循环的嵌套 P121
五、几种循环的比较
1.在while循环和do...while循环中,为了能使循环正常结束,应该在循环体中包含使循环趋于结束的语句(i++,i=i+1等)
2.while和do...while循环中,循环变量初始化操作都应该在while和do...while语句之前完成,for循环可以在表达式1中完成。
3.三种循环都可用break语句跳出循环,continue语句结束本次循环。
六、改变循环状态
1.用break语句提前终止循环
break语句可以用来从循环体内跳出循环体,提前结束循环,接着执行循环下面的语句。for循环中,不再执行“表达式3”。
注意:
(1)break语句只能用于循环语句和switch语句中,不能单独使用。
(2)break语句只终止并跳出最近的一层循环结构。
2.用continue语句提前结束本次循环
作用是结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的“表达式3”,然后进行下一次是否执行循环的判断。
3.break语句和continue语句区别
continue语句只结束本次循环;break语句是结束整个循环过程,不再判断执行循环的条件是否成立。
如果出现循环嵌套,break是提前终止内循环,执行内循环体下面的语句。
continue不可用于switch语句
在while循环中用if和continue语句时,如果在continue之前没有i++,则必须在if语句中加入i++等类似的趋使循环结束的语句,否则会进入无限循环。例如:
int i=1;
while(i<5){
if(i==2) continue;
i++;
}
此循环会进入无线循环,必须将if语句改为:
if(i==2){ i++;continue;}
引用请注明出处:http://www.sgyh.xyz/archives/75.html
已有 2 条评论
发表新评论
- 上一篇: C程序设计(第五版) 第四章 知识总结
- 下一篇: C语言使用输入字符串函数时的问题
怎么收藏这篇文章?
博主真是太厉害了!!!