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

下载本文档

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

文档简介

1、第5章,循环结构程序设计,1,学习交流PPT,一、实现循环结构的控制语句 二、循环嵌套 三、循环结构程序举例,主要内容,2,学习交流PPT,一、实现循环结构的控制语句,while语句 do-while语句 for语句 break、continue语句 几种循环的比较,3,学习交流PPT,格式,while (表达式) 语句,5.1 while语句,举例,P79,求110的累加和。,#include stdio.h int main() int i,sum; i=1; sum=0; while (i=10) sum=sum+i; i+; printf(sum=%5dn,sum); return 0

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

3、while (i=10) if (i%2=0) sum=sum+i; i+; printf(%dn,sum); ,运行结果:,求1到10之间的偶数和,举例,6,学习交流PPT,举例,求N!,#include void main() int i=1,n; float fac=1; printf(请输入n:); scanf (%d, ,运行结果:,7,学习交流PPT,利用公式: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

4、+2; s=-s; t=s*n; i+; printf(sum=%dn,sum); ,s:变化的符号 i:第i项 n:第i项的绝对值 t:第i项的值 sum:和,举例,运行结果:,8,学习交流PPT,举例,例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/n); return 0; ,运行结果:,前n项的乘积,81,9,学习交流PPT,举例,例5.3 现有

5、某班20名学生的C语言成绩,求该班学生的C语言的平均成绩。,运行结果: 请输入学生成绩: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 total=0,score,average; int i=1; printf(请输入学生成绩:); while(i=20) scanf(%f, ,total : 前i名学生的成绩的和 score : 每一名学生的成绩 average : 平均成绩,81,10,学习交流PPT,格式,do 循环体语

6、句 while(表达式);,5.2 do-while语句,举例,P85,求110的累加和。,#include stdio.h int main() int i,sum; i=1; sum=0; do sum=sum+i; i+; while(i=10); printf(sum=%5dn,sum); return 0; ,说明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。 2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3、先执行,后判断。,至少执行一次,11,学习交流PPT,举例,while和do-while循环的比较。,#include void main() int

7、 i,sum=0; scanf(%d, ,#include void main() int i,sum=0; scanf(%d, ,输入:1,输入:11,sum=55,sum=11,此程序的功能?,什么情况下两者结果相同?,12,学习交流PPT,格式,for (表达式1;表达式2;表达式3) 语句,P87,for (循环变量赋初值;循环条件;循环变量增值) 语句,执行过程,(1)先求解表达式1; (2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步; (3)求解表达式3; (4)转向步骤(2); (5)循环结束,执行for语句下面的一个语句

8、。,5.3 for语句,13,学习交流PPT,举例,求1100的累加和。,#include void main() int i,sum; sum=0; for (i=1;i=100;i+) sum=sum+i; printf(sum=%5dn,sum); ,?,1 求150的累加和. 2 求1100的奇数和. 3 求N!,i=1; while (i=100) sum=sum+i; i+; ,14,学习交流PPT,for (表达式1;表达式2;表达式3) 语句,说明,三个表达式都可以省略。,?,结果?,15,学习交流PPT,说明,1,i=1; for(; i=10;i+) sum=sum+i;,

9、2,for (i=1; ;i+) sum=sum+i;,?,3,for (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;,i=1 while (1) sum=sum+i; i+;,16,学习交流PPT,说明,4,5,for( ; ; ) sum=sum+i;,6,表达式1和表达式3可以是与循环变量无关的表达式。,for( ;i=10 ; ) sum=sum+i; i+; ,7,表达式2一般是关系表

10、达式,也可以是数值或字符表达式。,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语句中只放与 循环控制有关的语句。,17,学习交流PPT,说明,1、 三种循环语句在处理循环问题时,一般可以相互替代。,2、 对于循环次数固定的问题,用for语句实现比较简单。,3、 对于循环次数不确定的问题,可用while语句或do-while语句实现。,4、 while语句:先判断,后执行。 do-while语句:先执

11、行,后判断。,几种循环语句的比较,18,学习交流PPT,格式,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的累加和

12、,19,学习交流PPT,举例,例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语句,跳出循环,运行结果:11,20,学习交流PPT,举例,例5.12 输出100以内能被7整除的最大数。 P91,n n%7 第1次执行循环 100 2 第2次执行循环 99 1 第3次执行循环 98 0 第4

13、次执行循环时条件表达式n%7=0成立,执行break语句,跳出循环,运行结果:100以内能被7整除的最大数为:98,21,学习交流PPT,举例,例5.13 分析下面程序的运行结果。 P92,结束本次循环,#include stdio.h int main( ) int i=0,s=0; do if(i%2) 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次执行

14、循环 3 1 4 4 是 第5次执行循环 4 0 5 9 否 第6次执行循环 5 1 6 9 是 第7次执行循环 6 0 7 16 否 此时条件表达式17不成立,结束循环,运行结果:16,S=1+3+5+7,22,学习交流PPT,#include void main() int i; for(i=1;i3) break; if(i%2) printf(*); else continue; printf(#); printf($n); ,分析如下程序的输出结果:,*#*#$,举例,23,学习交流PPT,举例,例5.14 把100200之间的能被13整除的数输出。 P92,#include std

15、io.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,#include stdio.hint main( ) int n; for(n=100;n=200;n+) if(n%13=0) printf( %d ,n); printf(n); return 0;,24,学习交流PPT,概念,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。,举例,例5.15 马

16、克思曾经做过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花3先令,每个女人花2先令,每个小孩花1先令,共花去50先令。问男人、女人和小孩各几人(男人、女人和小孩均存在)?P83,#include stdio.h int main( ) int man,women,child; for(man=1;man16;man+) for(women=1;women=23;women+) child=30-man-women; if(man*3+women*2+child*1=50) printf(man=%-6dwowen=%-6dchild=%-6dn,man,w

17、omen,child); return 0; ,5.5 循环嵌套,男人人数,最多15人(16*3=48),女人人数,最多23人(24*2=48),小孩人数=30-man-women,25,学习交流PPT,运行结果: man=1 women=18 chile=11 man=2 women=16 chile=12 man=3 women=14 chile=13 man=4 women=12 chile=14 man=5 women=10 chile=15 man=6 women=8 chile=16 man=7 women=6 chile=17 man=8 women=4 chile=18 man

18、=9 women=2 chile=19,26,学习交流PPT,27,学习交流PPT,概念,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。,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*4 i=2,j=1 2*1 j=2 i=3 i=4,5.5循环嵌套,第六章 循环结构程序设计,28,学习交

19、流PPT,1 2 4 3 6 9 4 8 12 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,学习交流PPT,#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,学

20、习交流PPT,#include void 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,学习交流PPT,#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+)

21、 printf(“%4d”,i*j); printf(“n”); ,5.5循环嵌套,思考4,1 2 3 4 4 6 8 9 12 16,第六章 循环结构程序设计,32,学习交流PPT,举例,例5.16 打印乘法口诀表。 P95,#include stdio.h int 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; ,result i=1, j=1 1*1 j=2 1*2 j=

22、3 1*3 j=9 1*9 i=2, j=1 2*1 j=2 2*2 j=9 2*9 i=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=81,33,学习交流PPT,#include stdio.h int 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; ,resu

23、lt i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=9 1*9 i=2, j=1 2*1 j=2 2*2 j=9 2*9 i=9, j=1 9*1 j=2 9*2 j=9 9*9,34,学习交流PPT,举例,例5.17 求Fibonacci数列的前40个数。 按每行4个进行输出。,#include stdio.h int main( ) int n; long f1,f2; f1=1; f2=1; printf(%10d%10d,f1,f2); for(n=1;n=19;n+) if(n%2=0) printf(“n”);/每行输出4个 f1=f1+f2; f2=f2+f1;

24、printf(%10d%10d,f1,f2); printf(n); return 0; ,特点:第1、2个数为1、1。从第三个数开始,该数是其前面两个数之和。 F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n=3),P96,1 1 2 3 5 8 13 21 34 55 89 144 ,5.6 程序举例,35,学习交流PPT,输出下列图形:,1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9,#include stdio.h int mai

25、n( ) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%3d,j); printf(n); return 0; ,36,学习交流PPT,举例,例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),flag=1; k=m-1; f

26、or (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,学习交流PPT,#include # include int main() int m,k,i,n=0; scanf(%d, ,38,学习交流PPT,#include math.h #include stdio.h int main() int m,flag=0,i=2; printf(请输入一个非负整

27、数:n); scanf(%d, ,P82,39,学习交流PPT,第六章 顺序结构程序设计,举例:,求100200之间的全部素数。,#include # include int main() int m,k,i,n=0; for (m=101;m=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,学习交流PPT,#include /输出100到200之间的素数 #include void main() i

28、nt i,k,m,flag=1; for(m=100;m200;m+) k=sqrt(m); for (i=2;i=k;i+) if (m%i=0) flag=0; break; if (flag=1) printf(%dt,m); printf(n); ,?,flag=1;,41,学习交流PPT,例1,利用公式/4=1-1/3+1/5-1/7+求 的近似值。直到某一项的绝对值小于10-6为止。,pi=1-1/3+ 输出4* pi s=1(-1) n=1,3,5,7 t=s/n,#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=

温馨提示

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

评论

0/150

提交评论