C语言第5章循环结构程序设计2_第1页
C语言第5章循环结构程序设计2_第2页
C语言第5章循环结构程序设计2_第3页
C语言第5章循环结构程序设计2_第4页
C语言第5章循环结构程序设计2_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第6 6章章 循环结构程序设计循环结构程序设计1第第5 5章章第第5 5章章 循环结构程序设计循环结构程序设计2主要内容一、一、循环的概念循环的概念二、用二、用whilewhile语句实现循环语句实现循环三、用三、用do-whiledo-while语句实现循环语句实现循环四、用四、用for for 语句实现循环语句实现循环 五、五、breakbreak语句和语句和continuecontinue语句语句六、循环嵌套六、循环嵌套七、应用举例七、应用举例第第5 5章章 循环结构程序设计循环结构程序设计3思考思考求求1100的累加和。的累加和。分析分析换一种思路:换一种思路:首先设置一个累计器首先

2、设置一个累计器sum,其初值为,其初值为0,利用,利用sum += n来计算(来计算(n依次依次取取1、2、100),只要解决以下),只要解决以下3个问题即可:个问题即可: (1)将)将n的初值置为的初值置为1; (2)每执行)每执行1次次“sum += n;”后,后,n增增1; (3)当)当n增到增到101时,停止计算。此时,时,停止计算。此时,sum的值就是的值就是1100的累的累计和。计和。sum=1+2+100;.sum=sum+n;第第5 5章章 循环结构程序设计循环结构程序设计4格式格式while (循环条件表达式循环条件表达式) 循环体语句循环体语句P70说明说明1、循环体如果包

3、含一个以上的语句,必须使用复合语句形式。、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先判断表达式,后执行语句。、先判断表达式,后执行语句。 功能功能当表达式成立(表达式的值为非当表达式成立(表达式的值为非0值)时,执行值)时,执行while语句中的循语句中的循环体语句。环体语句。执行执行过程过程表达式表达式循环体语句循环体语句不成立不成立 成立成立 5.1 while语句语句?第第5 5章章 循环结构程序设计循环结构程序设计5sum=凵凵5050举例举例例例5.1:

4、求求1100的累加和。的累加和。 #include int main() int i,sum; i=1; sum=0; while (i=100) sum=sum+i; i+; printf(sum=%5dn,sum); return 0;思考思考1、如果去掉循环体中的大括号,执行过程将会怎样变化?、如果去掉循环体中的大括号,执行过程将会怎样变化?2、在循环体中,使、在循环体中,使循环条件循环条件趋向于不满足(假)的语句是哪条?趋向于不满足(假)的语句是哪条?3、变量、变量 i和和sum在循环外不赋予初值行不行?在循环外不赋予初值行不行?i=1; sum=0;?1 求求150的累加和的累加和.

5、2 求求1100的奇数和的奇数和.3 求求1100的偶数和的偶数和.第第5 5章章 循环结构程序设计循环结构程序设计6 求求1到到100的奇数和的奇数和#include int main() int i, sum; i=1; sum=0; while (i100) sum=sum+i; i+; i+; printf(sum= %dn,sum); return 0;运行结果:运行结果:凵凵25002500(1)循环体如果包含一个以上的语句,应该用 花括弧括起来,以复合语句形式出现。 (2)在循环体中应有使循环趋向于结束的语句举例举例第第5 5章章 循环结构程序设计循环结构程序设计7练习:练习:1

6、、求、求1到到100之间的偶数和;之间的偶数和;2、求、求N!第第5 5章章 循环结构程序设计循环结构程序设计8#include int main() int i, sum=0; i=1; while (i=100) if (i%2=0) sum=sum+i; i+; printf(%dn,sum); return 0;#include int main() int i=1, n; float fac=1; printf(请输入请输入n:); scanf (%d,&n); while (i=n) fac=fac*i; i+; printf(%.0fn,fac); return 0;运行

7、结果:运行结果:凵凵25502550请输入请输入n:5n:5运行结果:运行结果:120120第第5 5章章 循环结构程序设计循环结构程序设计9利用公式:利用公式:sum=1-3+5-7+9-11,求求前前10项的项的和。和。#include int main() int s,i,sum,t,n; i=0;n=1,sum=0,t=1,s=1; while(i10) sum=sum+t; n=n+2; s=-s; t=s*n; i+; printf(sum=%dn,sum); return 0; s:变化的符号变化的符号i:第第i项项n:第第i项的绝对值项的绝对值t:第第i项的值项的值sum:和和

8、运行结果:运行结果:sum=-10举例举例第第5 5章章 循环结构程序设计循环结构程序设计10举例举例例例5.2: 设设s=123n,求,求s不大于不大于400000时最大的时最大的n。#include int main( ) int n=1; long int s=1; while(s=400000) n=n+1; s=s*n; printf(不大于不大于400000时的最大时的最大n为:为:%dns值为:值为:%ldn,n-1,s); return 0;运行结果:运行结果:不大于不大于400000时的最大时的最大n为:为:9 s值为:值为:3628800前前n项的乘积项的乘积第第5 5章章

9、 循环结构程序设计循环结构程序设计11举例举例现有某班现有某班20名学生的名学生的C语言成绩,求该班学生的语言成绩,求该班学生的C语语言的平均成绩。即:输入言的平均成绩。即:输入20个学生的成绩,计算平个学生的成绩,计算平均值,输出平均值。均值,输出平均值。分析:定义变量表示学生的成绩、全班总和、平均成绩。分析:定义变量表示学生的成绩、全班总和、平均成绩。算法设计:算法设计: 第一步:输入第一步:输入20个学生的成绩个学生的成绩 第二步:计算成绩总和第二步:计算成绩总和 (用累加求和的方法)(用累加求和的方法) 第三步:计算平均值第三步:计算平均值 (总和(总和/人数)人数) 第四步:输出平均

10、值第四步:输出平均值如果定义如果定义20个变量保存个变量保存20个成绩,程序中计算成绩个成绩,程序中计算成绩总和会有什么问题?总和会有什么问题?第第5 5章章 循环结构程序设计循环结构程序设计12 回顾回顾 例题:求例题:求1到到100的奇数和的奇数和#include int main() int i, sum; i=1; sum=0; while (i100) sum=sum+i; i=i+2; printf(sum= %dn,sum); return 0;用用while循环循环实现实现累加求和累加求和累加项累加项是谁?是谁?累加项是如何不断累加项是如何不断被被更新更新的?的?ii=i+2;

11、第第5 5章章 循环结构程序设计循环结构程序设计13例题例题现有某班现有某班20名学生的名学生的C语言成绩,求该班学生的语言成绩,求该班学生的C语言的平均语言的平均成绩。即:输入成绩。即:输入20个学生的成绩,计算平均值,输出平均值。个学生的成绩,计算平均值,输出平均值。运行结果:运行结果: 请输入学生成绩:请输入学生成绩:23凵凵89凵凵67凵凵78凵凵94凵凵56凵凵34凵凵83凵凵90 凵凵67凵凵48凵凵72凵凵81凵凵65凵凵74凵凵87凵凵73凵凵67凵凵90凵凵98 20名学生的名学生的C语言平均成绩为:语言平均成绩为:71.8#include int main( ) float

12、 score, total=0,average; int i=1; printf(请输入学生成绩:请输入学生成绩:); while(i=20) scanf(%f,&score); total=total+score; i+; average=total/20; printf(20名学生的名学生的C语言平均成绩为:语言平均成绩为:%5.1fn,average); return 0; total 前前i 名名学生的学生的成绩的成绩的和和 score 每一名每一名学生的学生的成绩成绩average 平均成平均成绩绩i用来计用来计数数第第5 5章章 循环结构程序设计循环结构程序设计14举例举例

13、 从键盘输入一个非负整数,判断从键盘输入一个非负整数,判断m是否是素数。是否是素数。 素数(质数)素数(质数): 只能被只能被1和它本身整除的数。和它本身整除的数。判别方法:判别方法:57:若若256之间的每一个数都不能整除之间的每一个数都不能整除56,则,则57为素数,否则为素数,否则57不是素数。不是素数。m, k=m-1,i=2k :若每一个若每一个 i 的值都不能整除的值都不能整除m,则则m为素数,否则为素数,否则m不是素数。不是素数。flag=1;k=m-1;for (i=2;i=k;i+) if (m%i=0) flag=0;if (flag=1) printf(“yes!”);e

14、lse printf(“no!”);k=m-1;for (i=2;i=k+1) printf(“yes!”);else printf(“no!”);k=m-1;k=m/2;(m+1)/2;k=sqrt(m);sqrt(m+1)第第5 5章章 循环结构程序设计循环结构程序设计15#include math.h#include stdio.hint main() int m,flag=0,i=2, k;printf(请输入一个非负整数:请输入一个非负整数:n);scanf(%d,&m); k=sqrt(m);while(ik & flag=0) if(m%i=0) flag=1;

15、/m不是素数,修改不是素数,修改flag的值的值else i+;if(flag=0) printf(%d是素数。是素数。n,m);else printf(%d不是素数。不是素数。n,m);return 0;第第5 5章章 循环结构程序设计循环结构程序设计16举例举例求两个非负整数求两个非负整数m和和n的最大公约数和最小公倍数。的最大公约数和最小公倍数。#include int main( ) int m,n,t; printf(请输入两个非负整数:请输入两个非负整数:); scanf(%d%d,&m,&n); t=(mn)?m:t; while (t%m!=0|t%n!=0)

16、/m、n能否整除能否整除t t+; printf(最小公倍数为:最小公倍数为:%dn,t); return 0;找找m、n中较小中较小数数找找m、n中较中较大数大数第第5 5章章 循环结构程序设计循环结构程序设计17格式格式do 循环体语句循环体语句while (循环条件表达式循环条件表达式);说明说明1、循环体如果包含一个以循环体如果包含一个以上的语句,必须使用复合上的语句,必须使用复合语句形式。语句形式。2、在循环体中,必须有使、在循环体中,必须有使循环条件趋向于不满足循环条件趋向于不满足(假)的语句。(假)的语句。3、先执行循环体语句,后、先执行循环体语句,后判断表达式的值。判断表达式的

17、值。 含义含义执行执行do-while语句中的循环体语句,直到表达式的值为假(语句中的循环体语句,直到表达式的值为假(0)才跳出循环。才跳出循环。执行执行过程过程至少执至少执行一次行一次5.2 do-while语句语句表达式表达式循环体语句循环体语句假假真真第第5 5章章 循环结构程序设计循环结构程序设计18举例举例例例5.6 求求1100之间的奇数和。之间的奇数和。 #include int main() int i,sum; i=1; sum=0; do sum=sum+i; i+; i+; while (i=100); printf(sum=%5dn,sum); return 0;思考思

18、考1、如果去掉循环体、如果去掉循环体中的大括号会怎样?中的大括号会怎样?2、在循环体中,使、在循环体中,使循环条件循环条件趋向于不满趋向于不满足(假)的语句是哪足(假)的语句是哪条?条?运行结果:运行结果:凵凵25002500第第5 5章章 循环结构程序设计循环结构程序设计19举例举例while和和do-while循环的比较。循环的比较。 #include int main() int i,sum=0; scanf(%d,&i); while(i=10) sum=sum+i; i+; printf(sum=%dn,sum); return 0;#include int main() i

19、nt i,sum=0; scanf(%d,&i); do sum=sum+i; i+; while(i=10) ; printf(sum=%dn,sum); return 0;输入:输入:1 输入:输入:11 sum=55输出:输出:sum=55sum=0输出:输出:sum=11此程序的此程序的功能?功能?什么情况下两什么情况下两者结果相同?者结果相同?第第5 5章章 循环结构程序设计循环结构程序设计20举例举例例例5.7 设有一张厚为设有一张厚为x毫米,面积足够大的纸,将它不断对折。毫米,面积足够大的纸,将它不断对折。试问对折多少次后,其厚度可达试问对折多少次后,其厚度可达8848米

20、的珠穆朗玛峰的高度。米的珠穆朗玛峰的高度。 P76#include int main( ) int i=0; float x; printf(请输入纸张的厚度请输入纸张的厚度:); scanf(%f,&x); x=x*0.001; /将毫米转换为米将毫米转换为米 do x=x*2; i=i+1; while(x8848); printf(折叠次数折叠次数=%dn, i); return 0;数据描述:数据描述:x:纸张厚度纸张厚度i : 对折次数对折次数对折后纸对折后纸张厚度张厚度运行结果:运行结果:请输入纸张的厚度请输入纸张的厚度: 1: 1 折叠次数折叠次数=24=24第第5 5章

21、章 循环结构程序设计循环结构程序设计21格式格式for (表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句 P77for (循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值) 语句语句 执行执行过程过程(1)先求解表达式先求解表达式1;(2)求解表达式求解表达式2,若其值为真,则,若其值为真,则 执行循环体语句,然后执行第(执行循环体语句,然后执行第(3)步;)步;若为假,则结束循环,转到第(若为假,则结束循环,转到第(5)步;)步;(3)求解表达式求解表达式3;(4)转向步骤(转向步骤(2););(5)循环结束,执行循环结束,执行for语句下面的一语

22、句下面的一个语句。个语句。5.3 for语句语句表达式表达式2循环体语句循环体语句假假 真真求解表达式求解表达式1求解表达式求解表达式3第第5 5章章 循环结构程序设计循环结构程序设计22sum= 5050举例举例求求1100的累加和。的累加和。 #include int main() int i,sum; sum=0; for (i=1;i=100;i+) sum=sum+i; printf(“sum=%5dn”,sum); return 0;?1 求求155的累加和的累加和.2 求求1100的奇数和的奇数和.3 求求1100的偶数和的偶数和.第第5 5章章 循环结构程序设计循环结构程序设计

23、23for (表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句 说明说明三个表达式都可三个表达式都可以省略。以省略。表达式表达式2循环体语句循环体语句假假 真真求解表达式求解表达式3表达式表达式1省略省略需在循环体外赋初值需在循环体外赋初值循环体语句循环体语句求解表达式求解表达式1求解表达式求解表达式3表达式表达式2省略省略恒真循环恒真循环表达式表达式2循环体语句循环体语句假假 真真求解表达式求解表达式1表达式表达式3省略省略两种情况两种情况?结果?结果?第第5 5章章 循环结构程序设计循环结构程序设计24说明说明1i=1;for(; i=10;i+) sum=sum+i; 2f

24、or (i=1; ;i+) sum=sum+i; ?3for (i=1;i=10 ;) sum=sum+i; i+; for(i=1; i=10;i+) sum=sum+i; 表达式表达式1可以省略,可以省略,但其后的分号不但其后的分号不可以省略。可以省略。没有循环结没有循环结束条件,构束条件,构成了死循环成了死循环for(i=1; i=10;i+) sum=sum+i; 第第5 5章章 循环结构程序设计循环结构程序设计25说明说明45for( ; ; ) sum=sum+i; 6表达式表达式1和表达式和表达式3可以是可以是与循环变量无关的表达式。与循环变量无关的表达式。for( ;i=10

25、; ) sum=sum+i; i+; 7表达式表达式2一般是关系表达式,也一般是关系表达式,也可以是数值或字符表达式。可以是数值或字符表达式。while(i=10) sum=sum+i; i+ ; while (1) sum=sum+i; 表达式表达式1和表达式和表达式3可以可以同时省略,此时等同于同时省略,此时等同于while语句。语句。for(sum=0,i=1;i=100,i+) sum=sum+i; 例例建议:建议:for语句中只放与语句中只放与循环控制有关的语句。循环控制有关的语句。第第5 5章章 循环结构程序设计循环结构程序设计26 for(i=0;(c=getchar()!=n;

26、i+=c); 在表达式在表达式2 2中先从终端接收一个字符赋给中先从终端接收一个字符赋给c c,然后判断,然后判断此赋值表达式的值是否不等于此赋值表达式的值是否不等于n(n(换行符换行符) ),如果,如果不等于不等于nn,就执行循环体。,就执行循环体。此此forfor语句的循环体为空语句,把本来要在循环语句的循环体为空语句,把本来要在循环体内处理的内容放在表达式体内处理的内容放在表达式3 3中,作用是一样的。可见中,作用是一样的。可见forfor语句功能强,可以在表达式中完成本来应在循环体语句功能强,可以在表达式中完成本来应在循环体内完成的操作。内完成的操作。第第5 5章章 循环结构程序设计循

27、环结构程序设计27 for( ;(c=getchar()!=for( ;(c=getchar()!=n;)n;) printf(%c,c); forfor语句中只有表达式语句中只有表达式2 2,而无表达式,而无表达式1 1和表达式和表达式3 3。其作用是。其作用是每读入一个字符后立即输出该字符,直到输入一个每读入一个字符后立即输出该字符,直到输入一个“换行换行”为止。为止。请注意,从终端键盘向计算机输入时,是在按请注意,从终端键盘向计算机输入时,是在按EnterEnter键以后才将键以后才将一批数据一起送到内存缓冲区中去的。一批数据一起送到内存缓冲区中去的。运行情况:运行情况:Computer

28、Computer ( (输入输入) )Computer (Computer (输出输出) )而不是而不是CcoommppuutteerrCcoommppuutteerr第第5 5章章 循环结构程序设计循环结构程序设计28举例举例#include int main( ) float sum=0.0; int n; for(n=1;n=30;n+) sum=sum+(float)n/(float)(n+1); printf(sum=%5.2fn,sum); return 0;例例5.8: 计算计算 。3029433221.s第第5 5章章 循环结构程序设计循环结构程序设计29格式格式表达式表达式1

29、,表达式表达式2,表达式表达式n P79说明说明1. 逗号表达式常用于逗号表达式常用于for循环语句中。循环语句中。2.并不是在所有出现逗号的地方都组成逗号并不是在所有出现逗号的地方都组成逗号表达式表达式,如如:int a,b,c;scanf(%d%d%d, &a,&b,&c);含义含义 从左到右,依次计算各表达式的值,最后从左到右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值。一个表达式的值即为整个逗号表达式的值。逗号运算符和逗号表达式逗号运算符和逗号表达式 思考思考是不是所有出现逗号的地方都组成逗号表达式。是不是所有出现逗号的地方都组成逗号表达式。

30、?第第5 5章章 循环结构程序设计循环结构程序设计30举例举例例例5.10 若若a=5,求下列表达式及经过运算后,求下列表达式及经过运算后a的值:的值:a=(3+2,7+8) a=2*5,a*3 (a=3*5,a*4),a+5,a+=10结果:结果:15结果:结果:10结果:结果:25第第5 5章章 循环结构程序设计循环结构程序设计31格式格式while (表达式表达式1) if (表达式表达式2) break; 举例举例 . sum=0; for (i=1;i5) break; sum=sum+i; printf(“sum=%5dn”,sum); .while (表达式表达式1) if (表

31、达式表达式2) conitue; 结束结束整个整个循环循环结束结束本次本次循环循环 . sum=0; for (i=1;i=10;i+) if (i=5) continue; sum=sum+i; printf(“sum=%5dn”,sum); .5.4 break 和和 continue 语句语句第第5 5章章 循环结构程序设计循环结构程序设计32举例举例例例5.11 分析下面程序的运行结果。分析下面程序的运行结果。结束整个循环结束整个循环#include int main( ) int i=0,a=0; while(i=1;n-) if(n%7=0) printf(100以内能被以内能被7

32、整除的最大数为:整除的最大数为:“); printf(%dn, n); break; return 0; n n%7第第1次执行循环次执行循环 100 2第第2次执行循环次执行循环 99 1第第3次执行循环次执行循环 98 0第第4次执行循环时条件表达次执行循环时条件表达式式n%7=0成立成立,执行执行break语句,跳出循环语句,跳出循环运行结果:运行结果:100以内能被以内能被7整除的最大数为:整除的最大数为:98 第第5 5章章 循环结构程序设计循环结构程序设计34举例举例例例5.13: 分析下面程序的运行结果。分析下面程序的运行结果。 结束本次循环结束本次循环#include stdi

33、o.hint main( ) int i=0,s=0; do if(i%2) /n为奇数为奇数 i+; continue; i+; s+=i; while(i7); printf(%dn,s); return 0; i i%2 i+ s continue 是否执行是否执行第第1次执行循环次执行循环 0 0 1 1 否否第第2次执行循环次执行循环 1 1 2 1 是是 第第3次执行循环次执行循环 2 0 3 4 否否第第4次执行循环次执行循环 3 1 4 4 是是第第5次执行循环次执行循环 4 0 5 9 否否第第6次执行循环次执行循环 5 1 6 9 是是第第7次执行循环次执行循环 6 0 7

34、 16 否否此时条件表达式此时条件表达式17不成立不成立,结束循环结束循环运行结果:运行结果:16 第第5 5章章 循环结构程序设计循环结构程序设计35#include #include int main()int main() int i; int i; for(i=1;i=5;i+) for(i=1;i3) if(i3) break;break;if(i%2) printf(if(i%2) printf(* *););else else continue;continue;printf(#); printf(#); printf($n); printf($n); return 0; ret

35、urn 0; 分析如下程序的输出结果:分析如下程序的输出结果: *#*#$举例举例第第5 5章章 循环结构程序设计循环结构程序设计36举例举例把把100200之间的能被之间的能被13整除的数输出。整除的数输出。 #include stdio.hint main( ) int n; for(n=100;n=200;n+) if(n%13!=0) continue; else printf( %d ,n); printf(n); return 0;运行结果:运行结果:104 117 130 143 156 169 182 195 当n不能被13整除时,执行continue语句,结束本次循环(即跳过

36、printf函数语句),只有n能被13整除时才执行printf函数。结束本次循环结束本次循环第第5 5章章 循环结构程序设计循环结构程序设计371、 三种循环语句在处理循环问题三种循环语句在处理循环问题时,一般可以相互替代。时,一般可以相互替代。2、 对于循环次数固定的问题,用对于循环次数固定的问题,用for语句实现比较简单。语句实现比较简单。3、 对于循环次数不确定的问题,对于循环次数不确定的问题,可用可用while语句或语句或do-while语句实语句实现。现。4、 while语句语句:先判断,后执行。先判断,后执行。 do-while语句:先执行,后判语句:先执行,后判断。断。6.7 几

37、种循环语句的比较几种循环语句的比较第第5 5章章 循环结构程序设计循环结构程序设计38概念概念一个循环体内又包含另一个完整的循环结构,称为循环嵌套。一个循环体内又包含另一个完整的循环结构,称为循环嵌套。举例举例例例5.15 马克思曾经做过这样一道趣味数学题:有马克思曾经做过这样一道趣味数学题:有30个人在一个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花家小饭馆里用餐,其中有男人、女人和小孩。每个男人花3先令,先令,每个女人花每个女人花2先令,每个小孩花先令,每个小孩花1先令,共花去先令,共花去50先令。问男人、先令。问男人、女人和小孩各几人(男人、女人和小孩均存在)?女人和小孩各几

38、人(男人、女人和小孩均存在)?P83 #include stdio.hint main( ) int man,women,child; for(man=1;man29;man+) for(women=1;women=29-man;women+) child=30-man-women; if(man*3+women*2+child*1=50) printf(man=%-6dwowen=%-6dchild=%-6dn,man,women,child); return 0;5.5 循环嵌套循环嵌套男人人数,最多男人人数,最多28人人女人人数,女人人数,29-man小孩人数小孩人数=30-man-wo

39、men第第5 5章章 循环结构程序设计循环结构程序设计39运行结果:运行结果:man=1 women=18 chile=11man=2 women=16 chile=12man=3 women=14 chile=13man=4 women=12 chile=14man=5 women=10 chile=15man=6 women=8 chile=16man=7 women=6 chile=17man=8 women=4 chile=18man=9 women=2 chile=19第第5 5章章 循环结构程序设计循环结构程序设计40举例举例例例5.16 打印乘法口诀表。打印乘法口诀表。#incl

40、ude stdio.hint main( ) int i,j,result; for(i=1;i=9;i+) for(j=1;j=9;j+) result=i*j; /计算计算i行行j列上列上的元素值的元素值 printf(%d*%d=%-3dt,i,j,result); printf(n); return 0; resulti=1, j=1 1*1 j=2 1*2 j=3 1*3 j=9 1*9i=2, j=1 2*1 j=2 2*2 j=9 2*9i=9, j=1 9*1 j=2 9*2 j=9 9*9 1*1=1 1*2=2 1*9=9 2*1=2 2*2=4 2*9=18 9*1=9

41、9*2=18 9*9=81第第5 5章章 循环结构程序设计循环结构程序设计41 1 2 4 3 6 9 4 8 12 16#include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=i;j+) printf(“%4d”,i*j); printf(“n”); return 0;思考思考1第第5 5章章 循环结构程序设计循环结构程序设计42#include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=5-i;j+) printf(“%4d”,i*j); printf(“n”); return

42、0;思考思考2 1 2 3 4 2 4 6 3 6 4第第5 5章章 循环结构程序设计循环结构程序设计43#include int main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+) printf(“%4c”, ); for (j=5-i;j=4;j+) printf(“%4d”,i*j); printf(“n”); return 0;思考思考3 4 6 8 6 9 12 4 8 12 16第第5 5章章 循环结构程序设计循环结构程序设计44#include int main() int i,j; for (i=1;i=4;i+) for (

43、j=1;j=i-1;j+) printf(“%4d”, ); for (j=i;j=4;j+) printf(“%4d”,i*j); printf(“n”); return 0;思考思考4 1 2 3 4 4 6 8 9 12 16第第5 5章章 循环结构程序设计循环结构程序设计45举例举例例例5.17 求求Fibonacci数列的数列的前前40个数。个数。按每行按每行4个进行输出。个进行输出。#include stdio.hint main( ) int n; long int f1,f2; f1=1; f2=1; printf(%10d%10d,f1,f2); for(n=1;n=3) 1

44、 1 2 3 5 8 13 21 34 55 89 144 5.8 程序举例程序举例第第5 5章章 循环结构程序设计循环结构程序设计46求求Si=a+aa+aaa+ 的值。如的值。如a=5,i=3时,即时,即求表达式求表达式5+55+555的值。的值。a和和i由键盘输入。由键盘输入。 iaaa.a举例举例#include math.h#include stdio.hint main( ) int j, i, a, s=0; printf(请输入请输入a和和i的值:的值:n); scanf(%d%d,&a,&i); long int sum=0 for(j=1;j=i;j+) s

45、=s+a*(int)pow(10,(j-1); sum=sum+s; printf(SUM=%ldn,sum); return 0;pow()函数:求函数:求xy程序显示:请输入程序显示:请输入a和和i的值:的值:用户输入:用户输入:5 3并回车并回车程序输出:程序输出:SUM=615第第5 5章章 循环结构程序设计循环结构程序设计47i:第第i项项n:第第i项的分项的分母母t:第第i项的值项的值sum: 和和举例举例利用公式:利用公式:sum=1+1/3+1/5+1/7+1/9,求求前前10项的项的和。和。#include #include int main() int s,i,n; flo

46、at t,sum; i=0;n=1,sum=0,t=1.0; while(i10) sum=sum+t; n=n+2; t=1.0/n; i+; printf(sum=%.2fn,sum); return 0; 运行结果:运行结果:sum=2.13第第5 5章章 循环结构程序设计循环结构程序设计48举例举例利用公式利用公式sum=1-3+5-7+9-11 求求前前10项的项的和。和。#include #include int main() int s,i,sum,t,n; i=0;n=1,sum=0,t=1,s=1; while(i10) sum=sum+t; n=n+2; s=-s; t=s

47、*n; i+; printf(sum=%dn,sum); return 0; s:变化的符变化的符号号i:第第i项项n:第第i项的绝项的绝对值对值t:第第i项的值项的值sum:和和运行结果:运行结果:sum=-10第第5 5章章 循环结构程序设计循环结构程序设计49举例举例利用公式:利用公式: /4=1-1/3+1/5-1/7+求求 的近似值,直到某一项的绝对值小于的近似值,直到某一项的绝对值小于10-6为止。为止。#include #include int main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) p

48、i=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); return 0; 思考:使思考:使用那一种用那一种循环控制循环控制语句?语句?pi=1-1/3+输出输出4* pis=1(-1)n=1,3,5,7t=s/n运行结果:运行结果:sum=3.141594第第5 5章章 循环结构程序设计循环结构程序设计50举例举例输出输出 101200之间的全部素数。每行输出之间的全部素数。每行输出10个。个。#include #include void main() int m,k,i,n=0; for(m=101;m=200;m=m+2)

49、k=sqrt(m); for(i=2;i=k+1) printf(%d ,m); n=n+1; if(n%10=0) printf(n); printf(n);正常结束循环正常结束循环m不是素数不是素数第第5 5章章 循环结构程序设计循环结构程序设计51例例5.18 用双重用双重for循环打印出下列图形。循环打印出下列图形。P86 * * * * * * * #include stdio.hint main( ) int i,j; for(i=1;i=4;i+) for(j=1;j=4-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf

50、(n); for(i=1;i=3;i+) for(j=1;j=i;j+) printf( ); for(j=1;j=a & ch=A & ch=0 & ch=9) number+;else other+; scanf(%c,&ch); printf(字符数字符数=%dn空格数空格数=%dn数字数数字数=%dn其它字符的个数其它字符的个数=%dn,letter,space,number,other); return 0;letter:字符个数字符个数space:空格个数空格个数number:数字个数字个数数other:其它字符其它字符个数个数例例5.19例例 输入

51、一行字符,分别统计出其中英文字母、空格、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。数字和其它字符的个数。举例举例第第5 5章章 循环结构程序设计循环结构程序设计53举例举例译密码。输入一行字符,输出其相应的密码。译密码。输入一行字符,输出其相应的密码。译码规律:将字母变成其后的第译码规律:将字母变成其后的第4个字母,非字母字符不变。个字母,非字母字符不变。#include void main() char c; while(c=getchar()!=n) if(ca&cA&cZ&cz) c=c-26; printf(%cn,c); 第第5 5章章

52、 循环结构程序设计循环结构程序设计54循环部分编程及上机要注意的问题:循环部分编程及上机要注意的问题:1、for循环的末尾不能有:循环的末尾不能有:for(i=0;i10;i+); 2、循环控制变量在循环体内最好不要重新赋值:、循环控制变量在循环体内最好不要重新赋值:x=a;for(x=1;x=n;x+) sn=sn+x; x=x*10+a;3、注意循环中使用的、注意循环中使用的m=a;for(x=1;x=n;x+) sn=sn+m; m=m*10+a; for(x=1;x=n;x+) y=(pow(10,x)-1)*a/9 sn=sn+y;4、countine的用法:当的用法:当counti

53、ne后面没有语句时,可以省略后面没有语句时,可以省略for(x=1,t=0;x =n;x+) t=t+a; sn=sn+t; a=a*10; if(i%7=0) printf(“%8d”,i);else countine;注意注意第第5 5章章 循环结构程序设计循环结构程序设计55一一. 选择题选择题C语言程序的三种基本结构是顺序结构、选择结构和语言程序的三种基本结构是顺序结构、选择结构和( )。A.递归结构递归结构B. 转移结构转移结构C. 循环结构循环结构D. 嵌套结构嵌套结构2. 下面程序段中下面程序段中while循环执行的次数是循环执行的次数是( )。 int t=0; while(t

54、=1) t=t+1;A.无限次无限次B 一次也不行一次也不行C 执行一次执行一次D 有语法错,不能执行有语法错,不能执行3. 以下程序的输出结果是以下程序的输出结果是( )。 #include int main() int i, sum ; for(i=1; i6; i+) sum+=i; printf(%dn,sum); return 0; A.15B. 14C. 0D.不确定不确定作业及练习作业及练习第第5 5章章 循环结构程序设计循环结构程序设计564. 设设x和和y均为均为int型变量,则执行下面的循环后,型变量,则执行下面的循环后,x值为值为( )。 for(y=1,x=1;y=10

55、) break; if(x%2=1) x+=5;continue; x-=3; printf(%d,x);A.4B. 6C. 8D. 10第第5 5章章 循环结构程序设计循环结构程序设计575. 指出程序结束之时,指出程序结束之时,i,j,k 的值的值( )。 #include stdio.h int main( ) int a=10,b=5,c=5,d=5; int i=0,j=0,k=0; for(;ab;+b)i+; while(a+c)j+; do k+; while(ad+); return 0; A. i=5 j=5 k=6B. i=5 j=4 k=6 C. i=6 j=5 k=7

56、D. i=6 j=6 k=6第第5 5章章 循环结构程序设计循环结构程序设计586. 下面程序的输出是下面程序的输出是( )。 #include int main ( ) int i,j; for(i=0,j=10;ij;i+=2) j=j-1; printf(i=%d,j=%dn,i,j); return 0; A. i=8, j=6B. i=8, j=5 C. i=8, j=7D. i=8, j=87. 若已有定义若已有定义int i , j , k ;执行语句执行语句scanf(“%d%d%2d”,&i,&j,&k);时的键盘输入为:时的键盘输入为: 123 45

57、6 789所得的所得的i , j , k 的值分别为()的值分别为()。A. 123, 456和和789B. 1 , 2和和3C. 123, 456和和78D. 1 , 4和和78第第5 5章章 循环结构程序设计循环结构程序设计598. 若已定义若已定义int i, x,则则for( i=0,x=0; i=9&x!=5; i+,x+)控制控制的循环体执行()次。的循环体执行()次。A. 10B. 9C. 5D. 69. 若已定义若已定义a、b为整型变量,用为整型变量,用scanf(“%d%d”,&a,&b);语句语句输入输入a、b的值时,不可以用()作为输入的分隔符。的

58、值时,不可以用()作为输入的分隔符。A. ,B. 空格空格C. 回车回车D. Tab10、执行下列程序的输出显示是()。、执行下列程序的输出显示是()。 int main( ) int x=1, y=2,z; z=x+y; printf(“%d%d%dn”,x,y,z); return 0; A. 223B. 123C. 224D. 134第第5 5章章 循环结构程序设计循环结构程序设计6011. 有以下程序段,其中有以下程序段,其中x为整形变量:为整形变量: x=0; while(!x!=0) x+;一下选项中正确的是()。一下选项中正确的是()。 A. 退出循环后退出循环后x得值为得值为0

59、B. 退出循环后退出循环后x得值为得值为1 C. while的控制表达是非法的控制表达是非法D. while循环执行无数次循环执行无数次 12. 表达式表达式3&6&9的值为()。的值为()。A. 3B. 6C. 9D. 113. 以下以下while循环中,循环体执行的次数是()。循环中,循环体执行的次数是()。 k=1; while(-k) k=10;A. 10次次B.一次也不执行一次也不执行C.无限次无限次D. 1次次第第5 5章章 循环结构程序设计循环结构程序设计6114. 有以下程序段,其中有以下程序段,其中t为整形变量:为整形变量: t=1; while(-1) t-

60、; if(t) break; 以下选项中叙述正确的是()。以下选项中叙述正确的是()。 循环循环1次也不执行次也不执行B. 循环执行一次循环执行一次C. 循环控制表达式不合法循环控制表达式不合法 D. 循环执行两次循环执行两次15. 有以下程序段,其中有以下程序段,其中x为整形变量:为整形变量: x=-1; do ; while(x+); printf(“x=%dn”,x); 以下选项中叙述正确的是()。以下选项中叙述正确的是()。 A. 程序错误程序错误B. x=1C. x=-1D. x=0第第5 5章章 循环结构程序设计循环结构程序设计621. 下面程序的输出结果是下面程序的输出结果是_。#include stdio.hint main( ) int x,i; for(i=1;i=100;i+) x=i; if(+x%2=0) if(+x%3=0) if(+x%7=0) printf(%dn,x); retu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论