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

TAG:none

已有 2 条评论

  1. 怎么收藏这篇文章?

    grwwjjxjcd September 27th, 2024 at 01:38 pm回复
  2. 博主真是太厉害了!!!

    uleduecuuc September 22nd, 2024 at 07:15 pm回复

发表新评论