第五章 循环结构程序设计2.ppt

上传人:s****8 文档编号:67221715 上传时间:2022-12-24 格式:PPT 页数:33 大小:225KB
返回 下载 相关 举报
第五章 循环结构程序设计2.ppt_第1页
第1页 / 共33页
第五章 循环结构程序设计2.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《第五章 循环结构程序设计2.ppt》由会员分享,可在线阅读,更多相关《第五章 循环结构程序设计2.ppt(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第五章第五章 循环结构程序设计循环结构程序设计内蒙古科技大学实训中心while 语句语句循环变量初始化循环变量初始化循环条件循环条件 循环体循环体 非非0(真)(真)0(假假)一般一般形式形式:while(表达式表达式)语句;语句;(循环体)循环体)其其特点特点是:是:先判断表达式,后执行语句。先判断表达式,后执行语句。dowhile dowhile 语句语句 一般一般形式形式:do 循环体循环体 while (表达式表达式);0(假假)循环变量初始化循环变量初始化循环体循环体表达式表达式非非0(真真)其其特点特点是:是:先执行循环体,后判断循环条件。先执行循环体,后判断循环条件。main()

2、int sum,i;sum=0;i=0;do sum+=i;i+;while(i=1e-6i=1;sum=0;s=1;循环条件循环条件变量赋初值变量赋初值用循环结构求用循环结构求sumpi=4*sum;#include#includevoid main()float sum,i,pi,s;s=1;sum=0;i=1;while(fabs(s/i)1e-6)sum=sum+s/i;i=i+2;s=-s;pi=4*sum;printf(pi=%fn,pi);for 语句语句一般一般形式形式:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体循环变量初始化循环变量初始化循环条件循环

3、条件 循环体循环体 TF表达式表达式1表达式表达式2表达式表达式3循环体循环体 TF表达式表达式3:在执行完循环体语句之后执行的表达式。在执行完循环体语句之后执行的表达式。(控制变量的更新控制变量的更新)计算从计算从1 1到到1010所有整数的累加和,即:所有整数的累加和,即:1+2+3+4+5+6+7+8+9+101+2+3+4+5+6+7+8+9+10。例例5 5:#include”stdio.h”void main()int sum,i;sum=0;i=0;while(i=10)sum+=i;i+;printf(“sum=%dn”,sum);#include”stdio.h”void m

4、ain()int sum,i;for(sum=0,i=0;i=10;i+)sum+=i;printf(“sum=%dn”,sum);说明说明(1)表达式)表达式1 可以省略可以省略(2)表达式)表达式2可以省略可以省略 (不判断循环条件不判断循环条件)i=1;for(;i10)break;(3)表达式表达式3可以省略可以省略 (但应保证循环能够正常结束但应保证循环能够正常结束)(5)三个表达式都省略三个表达式都省略(4)表达式表达式1和表达式和表达式3可以同时省略可以同时省略 (等同等同while)for(i=1;i=10;)sum+=i+;i=1;for(;i=10;)while(i10)b

5、reak;不设初值,不判断条件,循环不设初值,不判断条件,循环变量不增加,无终止地执行循变量不增加,无终止地执行循环。环。说明说明(6)表达式表达式1,2,3,可为任意表达式,可为任意表达式 (7)表达式一般是关系表达式或逻辑表达式,也可以是数值表达表达式一般是关系表达式或逻辑表达式,也可以是数值表达式或字符表达式。式或字符表达式。for(sum=0,i=1;i=10;i+)/*逗号表达式逗号表达式*/sum+=i;说明说明sum=1*2*3*4*5*6*7*8*9*10s=1*2=2s=2*3=6s=6*4=24s=24*5=120s=120*6=720s=720*7=5040s=5040*

6、8=40320s=40320*9=362880s=362880*10=s=1*1=1s=s*1=1s=s*2=2s=s*10=3628800s=s*ii=i+1s=1分析:设求积变量用分析:设求积变量用s表示表示,则则例例6:计算:计算 1*2*3*4*5*6*10程序结构:程序结构:输入输入计算计算输出输出不需要输入不需要输入用用printf()函数输出结果函数输出结果循环体循环体s=s*i;i=i+1;i=10i=1;s=1;循环条件循环条件变量赋初值变量赋初值用循环结构实现用循环结构实现 三种循环都可以处理同一问题,一般情况下可以互换。三种循环都可以处理同一问题,一般情况下可以互换。wh

7、ilewhile和和do while do while 循环变量的初始化应在循环变量的初始化应在while while 和和do whiledo while之前完成,之前完成,而而forfor循环则在表达式循环则在表达式1 1中初始化。中初始化。(循环初始值)(循环初始值)whilewhile和和do while do while 只在只在whilewhile后面指定后面指定循环条件循环条件,而在循环体内应有使,而在循环体内应有使 循环结束的语句循环结束的语句(循环结束控制)(循环结束控制)。for for 循环中,表达式循环中,表达式2 2为为循环条件循环条件,表达式表达式3 3是使是使循环

8、结束控制循环结束控制语句。语句。forfor循环的功能比循环的功能比whilewhile循环强大,能循环强大,能 用用whilewhile循环完成的都可以用循环完成的都可以用for for 循环来完成。循环来完成。whilewhile、do whiledo while和和 forfor循环可以用循环可以用breakbreak语句跳出循环,用语句跳出循环,用continuecontinue语语 句结束本次循环,而用句结束本次循环,而用gotogoto和和ifif组成的循环则不能。组成的循环则不能。几种循环的比较几种循环的比较从键盘键入一个数,求出该数的阶乘从键盘键入一个数,求出该数的阶乘 n!n

9、!,即即1!=1 2!=1!*2 3!=2!*31!=1 2!=1!*2 3!=2!*3n!=(n-1)!*nn!=(n-1)!*n。main()int i=1,n;float jc=1;scanf(“%d”,&n);while(i=n)jc=jc*i;i+;printf(“%d!=%dn”,n,jc);例:例:main()int i=1,n;float jc=1;scanf(“%d”,&n);do jc=jc*i;i+;while(i=n);printf(“%d!=%dn”,n,jc);main()int i,n;float jc=1;printf(“input number:”);scan

10、f(“%d”,&n);for(i=1,jc=1;i=n;i+)jc=jc*i;printf(“%d!=%dn”,n,jc);穷举法和递推算法穷举法和递推算法 一、穷举法:一、穷举法:概念:把所有可能的方案都一一测试,找出其中概念:把所有可能的方案都一一测试,找出其中符合条件的方案。符合条件的方案。例例1:打印出所有的:打印出所有的“水仙花数水仙花数”,所谓,所谓“水仙水仙花数花数”是指一个三位数,其各位数字立方和等于是指一个三位数,其各位数字立方和等于该数本身。例如该数本身。例如153就是一水仙花数。就是一水仙花数。153=13+53+33水仙花数的特点水仙花数的特点:三位正整数、三位正整数、

11、各位数字立方和等于该数本身各位数字立方和等于该数本身关键步骤:关键步骤:1、判断一个数、判断一个数i是否是水仙花数是否是水仙花数2、输出所有的水仙花数、输出所有的水仙花数将将i的三位数分离出来,再求和的三位数分离出来,再求和ss=a*a*a+b*b*b+c*c*cc=i/100;a=i%10;b=i/10%10如果如果i等于等于s,i是水仙花数,输出是水仙花数,输出for(i=100;i=999;i+)c 表示百位表示百位b 表示十位表示十位a 表示个位表示个位s 表示三位数字立方和表示三位数字立方和if(s=i)printf(“%5d”,i);n#includenmain()n int i,

12、a,b,c;nfor(i=100;i=999;i+)n a=i%10;n b=(i/10)%10;n c=i/100;n if(a*a*a+b*b*b+c*c*c=i)printf(n%4d,i);n n循环嵌套循环嵌套 一个循环的循环体中套有另一个循环叫一个循环的循环体中套有另一个循环叫循环嵌套循环嵌套。这种嵌。这种嵌套过程可以一直重复下去。套过程可以一直重复下去。一个循环外面包围一层循环称为一个循环外面包围一层循环称为二重循环二重循环。一个循环外面包围二层循环称为一个循环外面包围二层循环称为三重循环三重循环。一个循环外面包围多层循环称为一个循环外面包围多层循环称为多重循环多重循环。whil

13、e、do-while、for可以互相嵌套自由组合。可以互相嵌套自由组合。while()do while():while()do do while();while();:while();for(;)for(;)do :for(;)while()for(;)while();循环嵌套的格式:循环嵌套的格式:例例7:打印打印8行行7列的星号矩形。列的星号矩形。*分析:分析:每一行的组成:每一行的组成:7个个*,一个,一个回车回车共共8行行输出一行的程序:输出一行的程序:for(j=0;j7;j+)printf(“*”);printf(“n”);输出输出8行的程序:行的程序:for(i=0;i8;i+)

14、for(j=0;j7;j+)printf(“*”);printf(“n”);例例7:打印打印8行行7列的星号矩形。列的星号矩形。#include main()int i,k;for(i=0;i8;i+)for(k=0;k7;k+)printf(*);printf(n);例例8:打印如下图形。打印如下图形。*分析:分析:第第1行:行:1个个*,3个空格,个空格,1个回车个回车第第2行:行:3个个*,2个空格,个空格,1个回车个回车第第3行:行:5个个*,1个空格,个空格,1个回车个回车第第4行:行:7个个*,0个空格,个空格,1个回车个回车第第i行:行:2*i-1个个*,4-i个空格,个空格,1

15、个回车个回车每一行的输出的程序:每一行的输出的程序:for(j=1;j=4-i;j+)printf(“”);for(j=1;j=2*i-1;j+)printf(“*”);printf(“n”);for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf(“”);for(j=1;j=2*i-1;j+)printf(“*”);printf(“n”);作业作业1、用、用for语句计算语句计算10!,即!,即1*2*3*4*5*6*7*8*9*10。2、输出如下图形、输出如下图形 *breakbreak语句和语句和continuecontinue语句语句1、break 语句语句 br

16、eak语句除了用于语句除了用于switch语句中,跳出语句中,跳出switch语句外,还用于语句外,还用于while,dowhile,for语句中,从最近的封闭循环体中跳出。但不语句中,从最近的封闭循环体中跳出。但不能用于循环语句和能用于循环语句和switch之外的语句。之外的语句。格式:格式:break;int r;float s;for(r=1;r100)break;2、Continue 语句语句 Continue语句用于循环语句中,作用为结束本次循环(即不语句用于循环语句中,作用为结束本次循环(即不执行本次循环中尚未执行的语句),进入下一次循环的判定。执行本次循环中尚未执行的语句),进入

17、下一次循环的判定。continue语句和语句和break语句的区别:语句的区别:continue语句只结束本次循环语句只结束本次循环,而不是终止整个循环。,而不是终止整个循环。break语句终止整个循环语句终止整个循环,不再判断循环条件。,不再判断循环条件。例如:输出例如:输出100-200之间不能被之间不能被3整除的数据。整除的数据。for(n=100;n=200;n+)if(n%3=0)continue;printf(“%d”,n);breakbreak语句和语句和continuecontinue语句语句读程序,区别两者的不同读程序,区别两者的不同main()int i,n;int s=0

18、;for(i=1;i=10;)scanf(%d,&n);if(n0)break;/*continue;*/s+=i;I+;printf(和和=%4d,s);1 1、编程:、编程:百马拉百砖百马拉百砖.用用100100匹马拉匹马拉100100块砖,红马拉块砖,红马拉3 3块,黑马块,黑马拉拉2 2块,白马两匹拉块,白马两匹拉1 1块,在红马、黑马和白马不可缺少的情况下,块,在红马、黑马和白马不可缺少的情况下,共有几种拉法?共有几种拉法?练习题练习题2、读程:、读程:main()int i,j,x,y;long s,m;printf(please input x,y:);scanf(%d,%d,&

19、x,&y);for(i=1,s=0,m=0;i=y;i+)m=m*10+x;s+=m;printf(nm=%ld s=%ld,m,s);3、读程:读程:main()int i,a,b,c;for(i=100;i1000;i+)a=i/100;b=i%100/10;c=i%10;if(i=a*a*a+b*b*b+c*c*c)printf(%d=%d3+%d3+%d3n,i,a,b,c);4、编程、编程:从键盘输入一个正整数(:从键盘输入一个正整数(=32767=32767),求它的位数,并),求它的位数,并打印出每一位的值。打印出每一位的值。5、编程、编程:百钱买百鸡。:百钱买百鸡。6 6、编程

20、、编程:求:求100999100999之间的水仙花数。(水仙花数:每位数的立之间的水仙花数。(水仙花数:每位数的立方和等于该数本身)方和等于该数本身)练习题练习题7、编程、编程:统计从键盘输入的字符中大写字母、小写字母或数值字符统计从键盘输入的字符中大写字母、小写字母或数值字符各是多少。各是多少。8、编程、编程:求求1-1000之间的同构数。之间的同构数。(同构数:该数平方值的后几位数等于该数本身)(同构数:该数平方值的后几位数等于该数本身)9、编程、编程:求求1000以内的完数。以内的完数。(完数:该数等于它的因子之和(除自身外)(完数:该数等于它的因子之和(除自身外)10、编程、编程:求求1!+2!+3!+n!的值。的值。练习题练习题

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com