c语言控制语句-循环语句
循环结构程序:
goto语句构成循环
while构成循环
do-while循环
for循环
1. goto语句
goto语句无条件跳转(慎重使用)
1.可以构成循环,语法结构如下:
标号:
语句块1;
goto 标号;
语句块2; //语句块1当中有跳转到这个位置的语句
以上结构会循环执行语句块1,直到遇到跳出语句块1的语句
作用
1.当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。
理由是:
2.无条件跳转易于理解
3.可以减少嵌套
4.可以避免那种忘记更新某一个出口点的问题
5.算是帮助编译器做了代码优化
练习:1~100的和:
#include <stdio.h>
int main(int argc,const char*grgv[])
{
int i=1,sum=0;
loop:
if(i<=100)
{
sum=sum+i;
i++;
goto loop;
}
printf("1+2+3+...+%d=%d\n",i-1,sum);
return 0;
}
loop这个标记可以改写为其他的:
2. while语句
while语句构成循环
基本形式
while (表达式) {
statatments;
}
什么时候退出循环 当条件为真是进入循环,条件为假时退出循环。
练习:求1到100的和:
3. do-while语句
do-while语句构成循环
基本形式
do {
statatments;
}while(表达式);
练习:求1到100的和:
注意:while和do-while的区别:while是先判断在执行,do-while是先执行在判断。
1)while循环中(条件)后面没有分号, do_while 循环中(条件)后面有“;”。
2)while与do_while执行循环体与判断的顺序不同。
3)各自的应用场合不同。while强调“条件是否满足”do_while强调“动作的行为”
练习:打印出所有的“水仙花”数。“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。
#include <stdio.h>
#include <math.h>
int main(int argc,const char*grgv[])
{
int i=100,a,b,c;
while(i<1000)
{
a=i/100;
b=(i-a*100)/10;
c=i-a*100-b*10;
// if(a*a*a+b*b*b+c*c*c==i)
if(pow(a,3)+pow(b,3)+pow(c,3)==i)
printf("%d\n",i);
i++;
}
return 0;
}
4. for语句
一般形式
for(expression1; expression2; expression3)
{
statements;
}
执行过程
1.先求解表达式1;
2.求解表达式2,若为真,则执行循环体,然后执行步骤3;
3.转回执行步骤2,若为假,执行for下面的语句
练习:1~100求和:
#include <stdio.h>
int main(int argc,char*argv[])
{
int i=0,sum=0;
for(;i<=100;)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
练习:打印9*9乘法表:
#include <stdio.h>
int main(int argc,char*argv[])
{
int i,j,sum;
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
sum=i*j;
printf("%d*%d=%d\t",j,i,sum);
}
puts("");
}
return 0;
}
外循环控制行,内循环控制列