C语言第5章循环结构程序设计PPT课件

上传人:公**** 文档编号:569873478 上传时间:2024-07-31 格式:PPT 页数:47 大小:682.50KB
返回 下载 相关 举报
C语言第5章循环结构程序设计PPT课件_第1页
第1页 / 共47页
C语言第5章循环结构程序设计PPT课件_第2页
第2页 / 共47页
C语言第5章循环结构程序设计PPT课件_第3页
第3页 / 共47页
C语言第5章循环结构程序设计PPT课件_第4页
第4页 / 共47页
C语言第5章循环结构程序设计PPT课件_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《C语言第5章循环结构程序设计PPT课件》由会员分享,可在线阅读,更多相关《C语言第5章循环结构程序设计PPT课件(47页珍藏版)》请在金锄头文库上搜索。

1、第第5 5章章1一、实现循环结构的控制语句一、实现循环结构的控制语句二、循环嵌套二、循环嵌套三、循环结构程序举例三、循环结构程序举例21.while语句语句2.do-while语句语句3.for语句语句4.break、continue语句语句5.几种循环的比较几种循环的比较3格式格式while (表达式表达式) 语句语句 5.1 while语句语句举例举例P79求求110的累加和。的累加和。 i=1 sum=0当当i=10sum=sum+ii+输出输出sum#include stdio.hint main()int i,sum;i=1; sum=0;while (i=10) sum=sum+i

2、; i+;printf(sum=%5dn,sum);return 0;说明说明1、循环体如果包含一个以上的语句,必须使用复合语句形式。、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先判断后执行。、先判断后执行。 1 求求1100的累加和的累加和.2 求求110的奇数和的奇数和.3 求求N!表达式表达式循环体语句循环体语句不成立不成立 成立成立 ?4 求求1到到10的奇数和的奇数和举例举例#include stdio.hint main()int i,sum;i=1; s

3、um=0;while (i=10) sum=sum+i; i+=2; printf(sum=%5dn,sum);return 0;运行结果:运行结果:5#include void main() int i,sum=0; i=1; while (i=10) if (i%2=0)sum=sum+i;i+; printf(%dn,sum);运行结果:运行结果:求求1到到10之间的偶数和之间的偶数和举例举例6举例举例求求N!#include void main() int i=1,n;float fac=1;printf(请输入请输入n:); scanf (%d,&n); while (i=n) fa

4、c=fac*i;i+;printf(%.0fn,fac);运行结果:运行结果:7利用公式:利用公式:sum=1-3+5-7+9-11求求前前10项的项的和。和。#include void 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); s:变化的符号变化的符号i:第第i项项n:第第i项的绝对值项的绝对值t:第第i项的值项的值sum:和和举例举例运行结果:运行结果:8举例举例例例5.2 设设s=123n,求,求s不大于不大于4

5、00000时时最大的最大的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/n);return 0;运行结果:运行结果:前前n项的乘积项的乘积819举例举例例例5.3 现有某班现有某班20名学生的名学生的C语言成绩,求该班学生的语言成绩,求该班学生的C语言语言的平均成绩。的平均成绩。运行结果:运行结果: 请输入学生成绩:请输入学生成绩:23凵凵89凵凵67凵凵78凵凵94凵凵56凵凵34凵凵83凵

6、凵90 凵凵67凵凵48凵凵72凵凵81凵凵65凵凵74凵凵87凵凵73凵凵67凵凵90凵凵98 20名学生的名学生的C语言平均成绩为:语言平均成绩为:71.8#include int main( ) float total=0,score,average;int i=1;printf(请输入学生成绩:请输入学生成绩:);while(i=20) scanf(%f,&score); total=total+score; i+; average=total/20; printf(20名学生的名学生的C语言平均成绩为:语言平均成绩为:% .1fn,average); return 0; total

7、:前前i名学生名学生的成绩的和的成绩的和 score : 每一名学生每一名学生的成绩的成绩average : 平均成绩平均成绩8110格式格式do 循环体语句循环体语句while(表达式表达式);5.2 do-while语句语句举例举例P85求求110的累加和。的累加和。 #include stdio.hint main() int i,sum; i=1; sum=0; do sum=sum+i;i+; while(i=10); printf(sum=%5dn,sum); return 0;说明说明1、循环体如果包含一个以上的语句,必须使用复合语句形式。、循环体如果包含一个以上的语句,必须使用

8、复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先执行,后判断。、先执行,后判断。 i=1 sum=0当当i10)输出输出sumsum=sum+ii+表达式表达式循环体语句循环体语句假假真真至少执至少执行一次行一次11举例举例while和和do-while循环的比较。循环的比较。 #include void main() int i,sum=0; scanf(%d,&i); while(i=10) sum=sum+i; i+; printf(sum=%dn,sum);#include void main() i

9、nt i,sum=0; scanf(%d,&i); do sum=sum+i; i+; while(i=10) ; printf(sum=%dn,sum);输入:输入:1 输入:输入:11 sum=55输出:输出:sum=55sum=0输出:输出:sum=11此程序的此程序的功能?功能?什么情况下两什么情况下两者结果相同?者结果相同?12格式格式for (表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句 P87for (循环变量赋初值;循环条件;循环变量增值循环变量赋初值;循环条件;循环变量增值) 语句语句 执行执行过程过程(1)先求解表达式先求解表达式1;(2)求解表达式求解表

10、达式2,若其值为真,则,若其值为真,则 执行循环体语句,然后执行第(执行循环体语句,然后执行第(3)步;)步;若为假,则结束循环,转到第(若为假,则结束循环,转到第(5)步;)步;(3)求解表达式求解表达式3;(4)转向步骤(转向步骤(2););(5)循环结束,执行循环结束,执行for语句下面的一语句下面的一个语句。个语句。表达式表达式2循环体语句循环体语句假假 真真求解表达式求解表达式1求解表达式求解表达式35.3 for语句语句13举例举例求求1100的累加和。的累加和。 #include void main() int i,sum; sum=0; for (i=1;i=100;i+) s

11、um=sum+i; printf(sum=%5dn,sum);?1 求求150的累加和的累加和.2 求求1100的奇数和的奇数和.3 求求N!i=1;while (i=100)sum=sum+i;i+;14说明说明1i=1;for(; i=10;i+) sum=sum+i; 2for (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可以省略,可以省略,但其后的分号不但其后的分号不可以省略。可以省略。没有循环结没有循环结束条件,构束条件,构成了死循环成了死循环f

12、or(i=1; i=10;i+) sum=sum+i; i=1while (1) sum=sum+i; i+; 16说明说明1、 三种循环语句在处理循环问题时,一般可以三种循环语句在处理循环问题时,一般可以相互替代。相互替代。2、 对于循环次数固定的问题,用对于循环次数固定的问题,用for语句实现语句实现比较简单。比较简单。3、 对于循环次数不确定的问题,可用对于循环次数不确定的问题,可用while语语句或句或do-while语句实现。语句实现。4、 while语句语句:先判断,后执行。先判断,后执行。 do-while语句:先执行,后判断。语句:先执行,后判断。几种循环语句的比较几种循环语句

13、的比较18格式格式while (表达式表达式1) if (表达式表达式2) break; 5.4 break/continue语句语句举例举例 . sum=0; for (i=1;i5) break; sum=sum+i; printf(“sum=%5dn”,sum); .while (表达式表达式1) if (表达式表达式2) conitue; 结束整结束整个循环个循环结束本结束本次循环次循环 . sum=0; for (i=1;i=10;i+) if (i=5) continue; sum=sum+i; printf(“sum=%5dn”,sum); .1到到5的累加和的累加和6到到10的

14、累加和的累加和19举例举例例例5.11 分析下面程序的运行结果。分析下面程序的运行结果。P90结束整个循环结束整个循环#include int main( ) int i=0,a=0;while(i20)if(i%10=0) break;else i+;i+=11;a+=i;printf(%dn,a);return 0; i i%10第第1次执行循环次执行循环 0 0条件表达式条件表达式i%10=0成立成立,执执行行break语句,跳出循环语句,跳出循环运行结果:运行结果:1120概念概念一个循环体内又包含另一个完整的循环结构,称为循环嵌套。一个循环体内又包含另一个完整的循环结构,称为循环嵌套

15、。 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16举例举例打印乘法口诀表。打印乘法口诀表。 #include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=4;j+) printf(%4d,i*j); printf(n); i=1,j=1 1*1 j=2 1*2 j=3 1*3 j=4 1*4i=2,j=1 2*1 j=2 i=3i=4for i=1 to 4输出输出i*jfor j=1 to 4换行换行5.5循环嵌套循环嵌套第六章第六章 循环循环结构程序设计结构程序设计28 1 2 4 3 6 9 4 8 12 16#

16、include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=i;j+) printf(%4d,i*j); printf(n); 5.5循环嵌套循环嵌套思考思考1第六章第六章 循环循环结构程序设计结构程序设计29#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=5-i;j+) printf(%4d,i*j); printf(n); 5.5循环嵌套循环嵌套思考思考2 1 2 3 4 2 4 6 3 6 4第六章第六章 循环循环结构程序设计结构程序设计30#include void

17、 main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+) printf(“%4d”, ); for (j=5-i;j=4;j+) printf(“%4d”,i*j); printf(“n”); 5.5循环嵌套循环嵌套思考思考3 4 6 8 6 9 12 4 8 12 16第六章第六章 循环循环结构程序设计结构程序设计31#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=i-1;j+) printf(“%4d”, ); for (j=i;j=4;j+) printf(“%4d”,i*

18、j); printf(“n”); 5.5循环嵌套循环嵌套思考思考4 1 2 3 4 4 6 8 9 12 16第六章第六章 循环循环结构程序设计结构程序设计32举例举例例例5.16 打印乘法口诀表。打印乘法口诀表。 P95#include 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

19、 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 9*2=18 9*9=8133输出下列图形:11 21 2 31 2 3 41 2 3 4 51 2 3 4 5 61 2 3 4 5 6 71 2 3 4 5 6 7 81 2 3 4 5 6 7 8 9#include stdio.hint main( ) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%3d,j

20、); printf(n); return 0;36举例举例例例5.4 从键盘输入一个非负整数,判断从键盘输入一个非负整数,判断m是否是素数。是否是素数。 P82素数(质数)素数(质数): 只能被只能被1和它本身整除的数。和它本身整除的数。判别方法:判别方法:57:若若256之间的每一个数都不能整除之间的每一个数都不能整除57,则,则57为素数,否则为素数,否则57不是素数。不是素数。m, k=m-1,i=2k :若每一个若每一个 i 的值都不能整除的值都不能整除m,则则m为素数,否则为素数,否则m不是素数。不是素数。k=m-1;k=m/2;(m+1)/2;k=sqrt(m);sqrt(m+1)

21、flag=1;k=m-1;for (i=2;i=k;i+) if (m%i=0) flag=0; break; if (flag=1) printf(yes! );else printf(no! );k=m-1;for (i=2;i=k+1) printf(yes! );else printf(no! );37第六章第六章 顺序结构程序设计顺序结构程序设计举例:举例:求求100200之间的全部素数。之间的全部素数。for m=101 to 200判断判断m是否为素数是否为素数若若m是素数,则输是素数,则输出并统计个数出并统计个数n.每输出每输出10个个素数,素数,换行换行#include #

22、include int main()int m,k,i,n=0;for (m=101;m=200;m+) k=sqrt(m+1); for (i=2;i=k+1) printf(%4d,m); n=n+1; if (n%10=0) printf(n); return 0; if (i=k+1) printf(%4d,m); n=n+1; if (n%10=0) printf(n);?40#include /输出输出100到到200之间的素数之间的素数#include void main()int i,k,m,flag=1;for(m=100;m200;m+)k=sqrt(m);for (i=2

23、;i=10-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出输出pi#include #include void main() int s; float n,t,pi; t=1;pi=0;n=1;s=1; while (fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); 同类题同类题sin(x)=x-x3/3!+x5/5!-x7/7!,直到最后一项的绝对值直到最后一项的绝对值10-7.P12442i:第第i项项n:第第i项的分母项的分母t:第第i项的值项的值sum:和和举例举例利用公

24、式:利用公式:sum=1+1/3+1/5+1/7+1/9求求前前10项的项的和。和。#include #include void main() int s,i,n; float 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); 运行结果:运行结果:sum=2.1343举例举例利用公式:利用公式: /4=1-1/3+1/5-1/7+求求 的近似值,直到某一项的绝对值小于的近似值,直到某一项的绝对值小于10-6为止。为止。#include #include voi

25、d main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); 思考:使思考:使用哪一种用哪一种循环控制循环控制语句?语句?pi=1-1/3+输出输出4* pis=1(-1)n=1,3,5,7t=s/n运行结果:运行结果:sum=3.14159444题题1输入输入10个数,输出最大值、最小值以及平均值个数,输出最大值、最小值以及平均值。第六章第六章 顺序结构程序设计顺序结构程序设计题题2输出如下图形。

26、输出如下图形。 题题3求求201300之间的全部素数。之间的全部素数。 ?输入输入10个整数,统计正数个数及负数个数个整数,统计正数个数及负数个数。输入一系列整数,用输入一系列整数,用0做结束标志。统计正数个数及负做结束标志。统计正数个数及负数个数数个数。* ?*45#include stdio.hvoid main()int i;float max,min,ave,x;scanf(%f,&x);max=min=ave=x;for(i=1;i10;i+) scanf(%f,&x); if(maxx) min=x; ave+=x;ave/=10;printf(max=%.2f,min=%.2f,ave=%.2fn,max,min,ave);题题1else46实验三实验三1,2,3,4,5,6,7,8,9,10,11实验指导:实验指导:113113页!页!47

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号