C语言-循环程序设计(for,break,continue语句)

for语句

在C语言中,for语句使用最为灵活,它完全可以取代while语句。

for语句的一般形式:for(表达式1;表达式2;表达式3)语句;

它执行过程:

1.先求解表达式1;

2.求解表达式2,若其值为真,则执行for语句中的内嵌语句,然后执行下面第3步;若其值为假,则结束循环,转到第五步;

3.求解表达式3

4.转回第二步继续执行;

5.循环结束,执行for语句下面一个语句。

for语句最简单的应用形式如下;

for(循环变量赋初值;循环条件;循环变量增量)语句;

循环变量赋初值总是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。

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

{

sum=sum+i;

}

先给i赋值,判断i是否小于等于100,若是,则执行语句 ,之后再加1,再重新判断,直到条件为假,即i>100时,结束循环。

注意事项:

1.for循环中的“表达式1(循环变量赋初值)”,“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,可以省略,但是“;”不能省略。

2.省略了“表达式1(循环变量赋初值)”,表示不对循环变量赋初值。

3.省略了“表达式2(循环条件)”,则不做其他处理时便成为死循环。

如:

for(i=1;;i++)

{

sum=sum+i;

}

4.省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作;这时可在语句体中修改循环控制变量的语句。

如:

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

{

sum=sum+i;

i++;

}

5.省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。

如:

for(;i<=100;)

{

sum=sum+i;

i++;

}

6.2个表达式都可以省略

如:

for(;;)语句

相当于:

while(1)语句

7.表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。

如:

for(sum=0;i<=100;i++) 

 sum=sum+i;

8.表达式1和表达式3可以是一个简单表达式,也可以是逗号表达式。

for(sum=0,i=1;i<=100;i++)  sum=sum+i;

或 for(i=0,j=100;i<=100;i++,j--)  k=i+k;

9.表达式2一般是关系表达式或逻辑表达式,也可以是数值表达式或字符表达式,只要其值非0,就执行循环体。

如:

for(i=0;(getchar())!='\n';i+=c)

又如:

for(;(c=getchar())!='\n';)

{

printf("%c",c);

}

循环的嵌套

例1:

#include<stdio.h>

void main()

{

int i,j,k;

printf("i j k\n");

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

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

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

}

例2:输出以下图像

*

**

***

****

*****

******

分析:一共六行,每行*数目与行号相同。

#include<stdio.h>

void main()

{

int i,j;

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

{

printf("\n");

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

{

putchar('*');

}

}

}

几种循环的比较

1.四种循环都可以用来处理同一问题,一般情况下它们可以相互代替。但一般不提倡用goto型循环。

2.在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i++或i--等。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中,因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。

3.用while和do-while循环时,循环变量初始化的操作应在while 和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。

4.while 循环,do-while循环和for循环,可以break语句跳出循环,用continue语句结束本次循环,而对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。

break语句

break语句可以用来从循环体内跳出循环体,即提前结束,接着执行循环下面的语句

一般形式:break;

注意:

1.break语句不能用于循环语句和switch语句之外的任何其他语句中。

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

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

例:

#include<stdio.h>

void main()

{

float pi=3.14159;

for(r=1;r<10;r++)

{

area=pi*r*r;

if(area>100)

{

break;

}

printf("r=%f,area=%f\n",r,area);

}

}

continue语句

作用为结束本次循环,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

一般形式:continue;

continue语句和break语句的区别:

continue语句只结束本次循环,而不是终止整个循环的进行。break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

例1:显示输入的字符,如果按的是esc键,则退出循环;如果按的是enter键,则不做任何处理,继续输入下一个字符。

#include<stdio.h>

void main()

{

char ch;

for(;;)

{

ch=getchar();

if(ch==27)

break;

if(ch==13)

continue;

putch(ch);

}

getch()

}

例2:把100~200之间的不能被3整除的数输出。当n能被3整除时,执行continue语句,结束本次循环(即跳过printf函数语句)只有n不能被3整除才执行printf函数。

#include<stdio.h>

void main()

{

int n;

for(n=100;n<=200;n++)

{

if(n%3==0)

{

continue;

}

printf("%d\n",n);

 

}

}

 

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值