循环结构的程序设计.ppt

上传人:wuy****n92 文档编号:77667051 上传时间:2023-03-16 格式:PPT 页数:54 大小:247.50KB
返回 下载 相关 举报
循环结构的程序设计.ppt_第1页
第1页 / 共54页
循环结构的程序设计.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《循环结构的程序设计.ppt》由会员分享,可在线阅读,更多相关《循环结构的程序设计.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 循环语句的执行流程循环语句的执行流程 while while 语句语句 do-while do-while 语句语句 for for 语句语句本本 章章 要要 点点2循环的概念循环的概念 问题:从键盘上输入问题:从键盘上输入1010个整数个整数并求和,怎么编程?并求和,怎么编程?问题:从键盘上输入问题:从键盘上输入500500个整数个整数并求和,怎么编程?并求和,怎么编程?36.1 6.1 循环的基本概念循环的基本概念n n循环循环 反复执行同一段程序,直到满足一定反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。的条件后才停止执行该段程序。nC C语言中控制循环的语句:语言中控

2、制循环的语句:p whilep do-whilep for4 首先判断循环首先判断循环控制表达式是否控制表达式是否为为“真真”,若为,若为“真真”,则反复,则反复执行循环体;若执行循环体;若为为“假假”,则结,则结束循环。束循环。1.1.当型循环当型循环循环体循环体N条件条件Y当型循环当型循环入口入口出口出口5 首先执行循环体,首先执行循环体,然后再判断循环然后再判断循环控制表达式,若控制表达式,若为为“真真”,则反,则反复执行循环体,复执行循环体,直到循环控制表直到循环控制表达式为达式为“假假”时时结束循环。结束循环。2.2.直到型循环直到型循环直到型循环直到型循环条件条件NY循环体循环体6

3、6.2 6.2 whilewhile语句语句nwhilewhile语句格式:语句格式:while(while(表达式表达式)语句;语句;说明:说明:语句部分即循环体可以是简单语语句部分即循环体可以是简单语句,也可以是复合语句。句,也可以是复合语句。7不成立不成立表达式表达式?执行语句执行语句成立成立执行执行whilewhile循环之后的语句循环之后的语句循环控制条件循环控制条件循环体循环体while语句的执行流程语句的执行流程8main()main()int count,num,total;int count,num,total;count=0;total=0;/*total:count=0;

4、total=0;/*total:存放累加和存放累加和*/*/while(count10)/*while(count10)/*循环控制条件循环控制条件*/*/count+;/*count+;/*循环体循环体*/*/printf(Enter the No.%d=,count);printf(Enter the No.%d=,count);scanf(%d,&num);scanf(%d,&num);total+=num;/*total+=num;/*计算累加和计算累加和*/*/printf(Total=%dn,total);printf(Total=%dn,total);例例从键盘输入从键盘输入10

5、10个整数,求这个整数,求这1010个整数的和个整数的和9main()main()int n=0;int n=0;while(n3)while(n3)printf(”n is%dn”,n);printf(”n is%dn”,n);n+;n+;printf(”Thats all.n”);printf(”Thats all.n”);例例例:分析程序的运行结果例:分析程序的运行结果10p无法正常终止的程序,称为无法正常终止的程序,称为“死死循环循环”。p结论结论:whilewhile语句循环体中,一定语句循环体中,一定要有能够对循环控制条件产生影要有能够对循环控制条件产生影响的语句。避免出现响的语句

6、。避免出现“死循环死循环”现象。现象。11分析:由于不知道要输入的字符数量,只分析:由于不知道要输入的字符数量,只知停止条件是输入字母知停止条件是输入字母a a,则只能将循环控则只能将循环控制条件设为制条件设为ch!=ach!=a。#include#include main()main()char ch=;char ch=;while(ch!=a)while(ch!=a)putchar(ch=getch()putchar(ch=getch();例:从键盘中读入一系列字符,直例:从键盘中读入一系列字符,直到输入字母到输入字母 a a 时才停止时才停止14 改写:改写:#include inclu

7、de main()main()char ch;char ch;while(ch=getch()!=a)while(ch=getch()!=a)putchar(ch)putchar(ch);15n例例:求求1 1到到100100的之和的之和 main()main()int total=0,i=1;int total=0,i=1;while(i=100)while(i=100)total=total+i;total=total+i;i+;i+;printf(”Total=%dn,total);printf(”Total=%dn,total);17n循环嵌套循环嵌套:在循环体中,又包含有循环语句,在

8、循环体中,又包含有循环语句,构成循环嵌套。构成循环嵌套。例例:输出下三角形乘法九九表。输出下三角形乘法九九表。1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9-1 1 2 4 2 4 3 6 9 3 6 9 4 8 12 16 4 8 12 16 5 10 15 20 25 5 10 15 20 25 6 12 18 24 30 36 6 12 18 24 30 36 7 14 21 28 35 42 49 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 8 16 24 32 40 48 56 64 9 18 27 36 45 54

9、63 72 81 9 18 27 36 45 54 63 72 81 假设:行号为假设:行号为i i(1=(1=i=9)i=9),列号为列号为j j(1=(1=j=i)j=i)则:第则:第 i i 行中一共要输出行中一共要输出 i i 个乘积个乘积i=6i=6j=5j=5i*ji*j18 main()main()int i=1,j;int i=1,j;while(i=9)printf(%4d,i+);while(i=9)printf(%4d,i+);printf(n-n);printf(n-n);i=1;i=1;while(i=9)while(i=9)j=1;j=1;while(j=i)whi

10、le(j=0=0 的整数,要求的整数,要求以相反的顺序输出该数。例如输入以相反的顺序输出该数。例如输入1234512345,则输出为,则输出为5432154321。25第一类第一类 0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,8,99第二类第二类 +,-,*,/,%,=+,-,*,/,%,=第三类第三类 其它字符其它字符当输入字符当输入字符时先计数然后停止接收输入时先计数然后停止接收输入例例 从键盘输入任意的字符,按下从键盘输入任意的字符,按下列规则进行分类计数列规则进行分类计数26 main()main()int class1=0,class2=0,class3=0;

11、char ch;int class1=0,class2=0,class3=0;char ch;do putchar(ch=getch();do putchar(ch=getch();switch(ch)switch(ch)case 0:case 1:case 2:case case 0:case 1:case 2:case 3:3:case 4:case 5:case 6:case case 4:case 5:case 6:case 7:7:case 8:case 9:case 8:case 9:class1+;break;/*class1+;break;/*对分类对分类1 1计数计数*/*/

12、case+:case-:case*:case case+:case-:case*:case/:/:case%:case=:case%:case=:class2+;break;/*class2+;break;/*对分类对分类2 2计数计数*/*/default:class3+;break;/*default:class3+;break;/*对分类对分类3 3计数计数*/*/while(ch!=);while(ch!=);printf(class1=%d,class2=%d,class3=%dn,printf(class1=%d,class2=%d,class3=%dn,class1,class2

13、,class3);class1,class2,class3);276.3 for 语句语句nforfor语句格式:语句格式:for(for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3)3)循环语句;循环语句;nforfor语句最常用的形式语句最常用的形式 forfor(循环变量赋初值;循环条件;(循环变量赋初值;循环条件;循环变量增量)循环变量增量)语句语句28不成立不成立执行表达式执行表达式1forfor语句的执行流程:语句的执行流程:循环初始条件循环初始条件循环控制条件循环控制条件表达式表达式2?执行语句执行语句成立成立执行执行forfor循环之后的语句循环之后的语句执行表

14、达式执行表达式3循环体循环体29forfor语句等价于下列语句:语句等价于下列语句:表达式表达式1 1;while while(表达式表达式2 2)语句;语句;表达式表达式3 3;30n递推公式:递推公式:n!=1n!=1 当当 n=1n=1时时n!=(n-1)n!=(n-1)!*n*n当当 n1n1时时 main()main()long int n=1;long int n=1;int i;int i;for(i=1;i=10;i+)for(i=1;i=10;i+)n=n*i;n=n*i;printf(%2d!=%ldn,i,n);printf(%2d!=%ldn,i,n);例例:求求1 1

15、到到1010整数的阶乘整数的阶乘31nmain()main()int i,j;int i,j;for(i=1;i10;i+)for(i=1;i10;i+)printf(%4d,i);printf(%4d,i);printf(n-n);printf(n-n);for(i=1;i10;i+)for(i=1;i10;i+)for(j=1;j=i;j+)for(j=1;j=i;j+)printf(j=i)?%4dn:%4d,i*j);printf(j=i)?%4dn:%4d,i*j);例例:用用forfor语句实现打印乘法九九表语句实现打印乘法九九表32说明:说明:1 for1 for语句的一般形式中

16、的语句的一般形式中的“表达式表达式1”1”可可以省略,此时应该在以省略,此时应该在forfor语句之前对循环语句之前对循环变量赋初值。而此时虽然表达式变量赋初值。而此时虽然表达式1 1被省略被省略了,但其后的分号不能省略。了,但其后的分号不能省略。例如:例如:int i=1,sum=0;for(;i=100;i+)sum=sum+i;332 2 表达式表达式2 2也可以被省略,此时不判断循环条也可以被省略,此时不判断循环条件,循环将无终止地进行下去,也就是认件,循环将无终止地进行下去,也就是认为表达式为表达式2 2始终为真。始终为真。3 3 表达式表达式3 3也可以省略。表达式也可以省略。表达

17、式3 3的功能是使循的功能是使循环变量变化,此时应保证循环变量变化,环变量变化,此时应保证循环变量变化,使循环能正常结束。使循环能正常结束。4 4 三个表达式都可以省略,此时不设初值,不三个表达式都可以省略,此时不设初值,不判断循环条件,循环变量不增值,因此该判断循环条件,循环变量不增值,因此该forfor语句的循环体将无终止地执行下去。语句的循环体将无终止地执行下去。345 5 表达式表达式1 1可以是设置循环变量初始值的赋值可以是设置循环变量初始值的赋值表达式,也可以是与循环变量无关的其它表达式,也可以是与循环变量无关的其它表达式。如:表达式。如:int i=1,sum;for(sum=0

18、;i=100;i+)sum=sum+i;表达式表达式3 3也可以是与循环控制无关的任意表也可以是与循环控制无关的任意表达式。如:达式。如:for(i=1;i=100;sum=sum+i)i+;0;99;35 6 6 表达式表达式1 1和表达式和表达式3 3可以是一个简单的可以是一个简单的表达式,也可以是逗号表达式,即包含表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间一个以上的简单表达式,中间用逗号间隔。如:隔。如:for(sum=0,i=1;i=3n=3)根据递推通项公式,可用根据递推通项公式,可用递推法递推法编写程序,计算第编写程序,计算第N N项的值。项的值。n递推法

19、递推法:由初始的已知条件开始,先计算出第:由初始的已知条件开始,先计算出第(N N1)1)步的结果,再利用前面已知的步的结果,再利用前面已知的(N N1)1)项结果,按照递项结果,按照递推公式(或遵照递推规则),推出第推公式(或遵照递推规则),推出第N N步结果。步结果。递推法是程序设计中最常用的方法之一,使用递推法递推法是程序设计中最常用的方法之一,使用递推法必须有明确的递推初始值和递推规则(递推公式)。必须有明确的递推初始值和递推规则(递推公式)。例例:求菲波那奇数列的第求菲波那奇数列的第n n项项38 main()main()int n,i,un1,un2,un;int n,i,un1,

20、un2,un;for(;)for(;)printf(Input n=?);scanf(%d,&n);printf(Input n=?);scanf(%d,&n);if(n=3)if(n=3)break;/*break;/*退出退出forfor循环循环*/*/else printf(nInput n is error!n);else printf(nInput n is error!n);un=un2=1;/*un=un2=1;/*设置递推初始值设置递推初始值*/*/for(i=3;i=n;i+)for(i=3;i=100;j-)for(j=999;j=100;j-)if(n%j=0)if(n%

21、j=0)printf(”3 digits in%ld=%dn”,n,j printf(”3 digits in%ld=%dn”,n,j););break;/*break;/*控制退出循环控制退出循环*/*/例例:求求555555555555的约数中最大的三位数是多少?的约数中最大的三位数是多少?47nbreakbreak语句使用注意:语句使用注意:1 1、在嵌套循环中,、在嵌套循环中,breakbreak语句仅能语句仅能退出一层退出一层(当前当前)循环。循环。2 2、若在循环语句中包含了、若在循环语句中包含了switchswitch语语句,那么句,那么switchswitch语句中的语句中的

22、break break 语句仅语句仅能使控制退出能使控制退出switchswitch语句。语句。486.6.2 continue6.6.2 continue语句语句n格式格式continuecontinue;n功能功能continuecontinue语句仅能在循环语句中使用语句仅能在循环语句中使用它的作用不是结束循环,而是开始一次新它的作用不是结束循环,而是开始一次新的循环。的循环。对于对于forfor语句,将控制转到执行表达式语句,将控制转到执行表达式3 3和和条件测试部分;对于条件测试部分;对于whilewhile和和do-whiledo-while语句,语句,将控制转到条件测试部分;将控

23、制转到条件测试部分;49ncontinuecontinue语句的执行流程语句的执行流程表达式表达式?continue成立成立不成立不成立执行后续语句执行后续语句表达式表达式?continue成立成立不成立不成立执行后续语句执行后续语句while语句语句do-while语句语句50表达式表达式2?continue成立成立不成立不成立执行后续语句执行后续语句执行表达式执行表达式3执行表达式执行表达式1for语句语句51n main()main()int i,count=0,j,sum=0;int i,count=0,j,sum=0;for(i=1;i=10;i+)for(i=1;i=10;i+)s

24、canf(%d,&j);scanf(%d,&j);if(j=0)if(j=0)continue;/*continue;/*结束本次循环,不进行后续操作结束本次循环,不进行后续操作*/*/count+;/*count+;/*计数器计数器*/*/sum+=j;sum+=j;/*/*求累加和求累加和*/*/if(count)if(count)printf(Plus numer:%d,average value:%.2f,printf(Plus numer:%d,average value:%.2f,count,1.0*sum/count);count,1.0*sum/count);else prin

25、tf(Plus numer:0,average value:0);else printf(Plus numer:0,average value:0);例例 输入输入1010个整数,求其中正数的个个整数,求其中正数的个数及平均值,精确到小数点后两位数及平均值,精确到小数点后两位526.6.4 return6.6.4 return语句语句n格式格式:格式一:格式一:returnreturn;格式二:格式二:return(return(表达式);表达式);53n功能功能:1.1.returnreturn语句使程序从被调用函数语句使程序从被调用函数中返回到调用函数的调用处继续运行。中返回到调用函数的调用处继续运行。returnreturn后跟一表达式,则该表达式的值会后跟一表达式,则该表达式的值会从被调用函数中带回到调用它的函数,从被调用函数中带回到调用它的函数,称为返回值。称为返回值。54

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁