预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共52页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章循环结构程序设计准备部分组成循环语句while语句格式:while(表达式)语句功能:当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。编程:求1+2+3+…+100的值main(){inti=1,sum=0;/*准备部分*/while(i<=100)/*控制部分*/{sum=sum+i;/*工作部分*/i=i+1;/*修改部分*/}printf("sum=%d\n",sum);printf("i=%d\n",i);}说明:1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。2)在循环体中应有使循环趋向于结束的语句。如果无此语句,则i的值始终不改变,循环永不结束。即形成了死循环。dowhile语句格式:do语句while(表达式);功能:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。main(){inti=1,sum=0;do{sum=sum+i;i=i+1;}while(i<=100);printf("sum=%d\n",sum);printf("i=%d\n",i);}while语句和do-while语句的比较:在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。while与dowhile区别i<=10时相同,i>10时不同main(){intc;while((c=getchar())!='\n')putchar(c);}例:用0.1mm厚纸对折,对折多少次后其厚度超过地球直径(12742公里)main(){intn=1;floatans;ans=2*1e-7;while(ans<=12742){n=n+1;ans=ans*2;}printf("n=%d,ans=%f\n",n,ans);getch();}求:框里数字(1~9):111111=111*11*1main(){longinti=1,ans;do{ans=111*11*(i*10+1);i++;}while(111111!=ans);printf("i=%d\n",i-1);}设有一阶梯,每步2阶,最后余1阶;每步3阶,最后余2阶;每步5阶,最后余4阶;每步6阶,最后余5阶;每步7阶,正好到楼顶。问共有多少阶梯。求两个非负整数u和v的最大公因子(即最大公约数)。for语句格式:for(<表达式1>;<表达式2>;<表达式3>)语句表达式1for语句最简单最常用的应用形式:for(循环变量赋初值;循环条件;循环变量增值)如:for(i=1;i<=100;i++)sum=sum+i;相当于:i=1;while(i<=100){sum=sum+i;i++;}for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如:for(;i<=100;i++)sum=sum+i;执行时,跳过“表达式1”,其他不变。若省略表达式2,即不判断循环条件,即认为表达式2始终为真。如:for(i=1;;i++)sum=sum+i;相当于:i=1;while(1){sum=sum+1;i++;}表达式3也可以省略,但此时应保证循环能正常结束。如:for(i=1;i<=100;){sum=sum+i;i++;}此时由于省略表达式3,而将语句i++;作为循环体的一部分,效果是一样的,都能使循环正常结束。可以同时省略表达式1和表达式3,只有表达式2,即只给循环条件。如:for(;i<=100;)while(i<=100){sum=sum+i;{sum=sum+i;i++;}i++;}在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。也可以将3个表达式都省略,如:for(;;)语句相当于while(1)语句即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。此时应在循环体中设置退出循环的语句。表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。如:for(sum=0;i<=100;i++)sum=sum+i;表达式3也可以是与循环控制无关的任意表达式。如:for(sum=0;i<=100;sum++)i++;表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。如:for(sum=0,i=1;i<=100;i++)sum=sum+i;或for(i=0,j=10