c语言循环语句和循环控制例题解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、循环控制

(一)、break语句

break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。

当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。

例如:

int main(int argc, char *argv[])

{

int sn=0,i;

for(i=1;i<=100;i++)

{

if(i==51) break; /*如果i等于51,则跳出循环*/

sn+=i; /*1+2+……+50*/

}

printf(%d\n,sn);

}

可以看出,最终的结果是1+2+……+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。

注意:

1. break语句对if-else的条件语句不起作用。

2. 在多层循环中,一个break语句只向外跳一层。

例如:

int main(int argc, char *argv[])

{

int i,j;

printf(i j\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{

if(j==2) break;

printf(%d %d\n,i,j);

}

}

输出结果为:

i j

0 0

0 1

1 0

1 1

当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。

(二)、continue语句

continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。

continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用,用来加速循环。

例如:

int main(int argc, char *argv[])

{

int sn=0,i;

for(i=1;i<=100;i++)

{

if(i==51) continue; /*如果i等于51,则结束本次循环*/

sn+=i; /*1+2+……+50+52+……+100*/

}

printf(%d\n,sn);

}

从程序中可以看出,continue语句只是当前的值没有执行,也就是说当前的值跳过去了,接着执行下次循环。

int main(int argc, char *argv[])

{

int i,j;

printf(i j\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{

if(j==1) continue;

printf(%d %d\n,i,j);

}

}

输出结果为:

i j

0 0

0 2

1 0

1 2

(三)、goto语句

goto语句是一种无条件转移语句,与BASIC中的goto语句相似。goto语句的使用格式为: goto 标号;

其中标号是Turbo C 2.0中一个有效的标识符,这个标识符加上一个:一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。标号既然是一个标识符,也就要满足标识符的命名规则。另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。

int main(int argc, char *argv[])

{

int sn=0,i;

for(i=1;i<=100;i++)

{

if(i==51) goto loop; /*如果i等于51,则跳出循环*/

sn+=i; /*1+2+……+50*/

}

loop: ;

printf(%d\n,sn);

}

可以看出,这儿的goto语句和break作用很类似。

这儿的loop: ;

printf(%d\n,sn);

也可以写成loop: printf(%d\n,sn);

int main(int argc, char *argv[])

{

int sn=0,i;

for(i=1;i<=100;i++)

{

if(i==51) goto loop; /*如果i等于51,则跳出本次循环*/

sn+=i; /*1+2+……+50+52+……+100*/

loop: ;

}

printf(%d\n,sn);

}

可以看出这儿的loop语句和continue的作用类似。

但是某些情况下又必须使用goto语句,否则会让程序大大臃肿。如:int main(int argc, char *argv[])

{

int i,j,k;

printf(i j k\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

for(k=0;k<3;k++)

{

if(k==2) goto loop;

printf(%d %d %d\n,i,j,k);

}

loop: ;

}

输出结果为:

i j k

0 0 0

0 0 1

如果不使用goto语句,而使用break,continue语句,应该这样

相关文档
最新文档