书签 分享 收藏 举报 版权申诉 / 33
上传文档赚钱

类型C语言程序设计课件第4章循环结构.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:3714490
  • 上传时间:2022-10-06
  • 格式:PPT
  • 页数:33
  • 大小:2.76MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言程序设计课件第4章循环结构.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言程序设计 课件 循环 结构
    资源描述:

    1、C语语言程序言程序设计设计第第4章章 循环结构循环结构2本章主要本章主要内内容容 1.循循环结构设计环结构设计理念理念 2.for循循环语环语句句 3.while循循环语环语句句 4.dowhile循循环语环语句句 5.循循环环嵌套嵌套 6.流程控制流程控制语语句句3循循环结构环结构程序程序设计设计所谓循环是指使用一定条件对同一个程序段重复执行所谓循环是指使用一定条件对同一个程序段重复执行若干次。被重复执行的部分称为循环体。若干次。被重复执行的部分称为循环体。循环设计步骤循环设计步骤:step1:构造循环体构造循环体step2:寻找控制循环的变量寻找控制循环的变量step3:找出控制循环变量的

    2、找出控制循环变量的3个要素:初值、继个要素:初值、继续循环的条件、使循环趋于结束的部分。续循环的条件、使循环趋于结束的部分。4循循环环控制控制的的两种两种方法方法标志法标志法 主要用在循环次数不确定的情况下。基本思主要用在循环次数不确定的情况下。基本思想是:设置一个标志变量,标志变量的值随想是:设置一个标志变量,标志变量的值随着循环发生变化。每循环一次,就测试一次着循环发生变化。每循环一次,就测试一次标志变量的值,当标志变量的值满足指定条标志变量的值,当标志变量的值满足指定条件时,结束循环件时,结束循环。计数法计数法 主要用在循环次数确定的情况下。基本思想主要用在循环次数确定的情况下。基本思想

    3、是是:设置一计数变量,称为计数器。循环开设置一计数变量,称为计数器。循环开始前给出初始值,每循环一次,计数变量增始前给出初始值,每循环一次,计数变量增1(即计一次数),直到计数变量的值到达(即计一次数),直到计数变量的值到达指定次数。指定次数。5C循循环环语语句句for语句while语句do-while语句6for语句语句语法形式:语法形式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体;循环体;执行过程:执行过程:step1:先求解表达式先求解表达式1,表达,表达式式1只执行一次,一般是赋值只执行一次,一般是赋值语句,用于初始化循环变量。语句,用于初始化循环变量。step

    4、2:求解表达式求解表达式2,若为,若为0(假),则退出循环执行后续语假),则退出循环执行后续语句。若为非句。若为非0(真),则执行(真),则执行循环体。循环体。step3:执行表达式执行表达式3。Step4:转回转回step2继续判断。继续判断。7for语句应用实例语句应用实例【例例4.1】在屏幕上显示一行在屏幕上显示一行6个个*。核心语句:核心语句:for(i=1;i=6;i+)printf(*);执行次数执行次数循环变量循环变量i值值循环条件循环条件i=6循环体执行循环体执行表达式表达式3第第1次循环次循环i=1真真*i=2第第2次循环次循环i=2真真*i=3第第3次循环次循环i=3真真*

    5、i=4第第4次循环次循环i=4真真*i=5第第5次循环次循环i=5真真*i=6第第6次循环次循环i=6真真*i=7第第7次循环次循环i=7假假循环结束循环结束8for语句应用实例语句应用实例【例例4.2】求求1+2+3+100的累加和。的累加和。#include stdio.h#include stdio.hvoid main()void main()int i,sum=0;int i,sum=0;for(i=1;i=100;i+)for(i=1;i100)if(i100)break;break;sum+=i;sum+=i;i+;i+;for(i=1;i=100;sum+=i,i+);for(

    6、i=1,j=10;ij;i+,j-)printf(%3d,i+j);11while语句语句语法形式:语法形式:while(while(表达式表达式)循环体;循环体;执行过程:执行过程:step1:求解表达式,若求解表达式,若为为0(假),则退出循(假),则退出循环执行后续语句。若环执行后续语句。若为非为非0(真),则执行(真),则执行循环体。循环体。step2:转回转回step1继续继续判断。判断。表达式?表达式?循环体循环体非非0(0(真真)0(0(假假)后续语句后续语句12while语句应用实例语句应用实例【例例4.3】从键盘上读入一个非从键盘上读入一个非0的整数,统计该数的的整数,统计该

    7、数的位数。位数。#includestdio.h#includestdio.hvoid main()void main()int count=0,number;int count=0,number;printf(Please enter an integer:);printf(Please enter an integer:);scanf(%d,&number);scanf(%d,&number);if(number0)number=-number;if(number0)number=-number;while(number!=0)while(number!=0)count+;count+;nu

    8、mber=number/10;number=number/10;printf(It contains%d digits.n,count);printf(It contains%d digits.n,count);语句功能语句功能?13while语句应用实例语句应用实例【例例4.4】计算表达式计算表达式a+aa+aaa+aaaa,其中,其中a与与x的值从的值从键盘上输入。键盘上输入。int a,x;int a,x;long sum=0,n=1,tn;long sum=0,n=1,tn;scanf(%d,%d,&a,&x);scanf(%d,%d,&a,&x);tn=a;tn=a;while(n=

    9、x)while(n=x)sum+=tn;sum+=tn;tn=tntn=tn*10+a;10+a;n+;n+;循环次数循环次数循环条件循环条件sumsum值值tntn值值n n值值第第1 1次次1=41=4为真为真0+20+22 2*10+210+22 2第第2 2次次2=42=4为真为真2+222+222222*10+210+23 3第第3 3次次3=43=4为真为真24+22224+222222222*10+210+24 4第第4 4次次4=44=4为真为真246+2222246+222222222222*10+210+25 5第第5 5次次5=45=4为假为假14想一想?想一想?whil

    10、e(c=getchar()!=Y|c!=y|c!=N|c!=n);while(1);while(i);while(!i);15dowhile语句语句语法形式:语法形式:do 循环体;循环体;while(表达式表达式);执行过程:执行过程:step1:step1:执行执行dodo后面循环体后面循环体中的语句;中的语句;step2:step2:求解求解whilewhile后圆括后圆括号内的表达式。若为号内的表达式。若为0 0(假),执行假),执行step3step3;若为;若为非非0 0(真),转去继续执(真),转去继续执行循环体。行循环体。step3:step3:退出退出do-whiledo-w

    11、hile循循环,执行后续语句。环,执行后续语句。表达式?表达式?循环体循环体非非0(0(真真)0(0(假假)后续语句后续语句16dowhile语句应用实例语句应用实例【例例4.5】编写含有菜单的算术四则运算程序。编写含有菜单的算术四则运算程序。dodo printf(n math exercise);printf(n math exercise);printf(n please enter your choice and numbers);printf(n please enter your choice and numbers);scanf(%d%dscanf(%d%d,&x,&y);,&x

    12、,&y);op=getchar();op=getchar();getchar();getchar();switch(op)switch(op)case 1:printf(n add is%d,x+y);break;case 1:printf(n add is%d,x+y);break;default:printf(n error.choice again n);break;default:printf(n error.choice again n);break;while(op!=5);while(op!=5);17循环嵌套循环嵌套 循环语句可以嵌套。在循环体语句中又包含另一循环语句可以嵌套。

    13、在循环体语句中又包含另一个完整的循环结构的形式,称为循环的嵌套。个完整的循环结构的形式,称为循环的嵌套。嵌套在循环体内的循环称为内循环,外面的循环嵌套在循环体内的循环称为内循环,外面的循环称为外循环。称为外循环。如果内循环体中又有嵌套的循环语句,则构成多如果内循环体中又有嵌套的循环语句,则构成多重循环。重循环。for、while、do-while循环语句既可以并列,也循环语句既可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉可以相互嵌套,但要层次清楚,不能出现交叉 。18循环嵌套的原则循环嵌套的原则对于多重循环,特别要注意给与循环有关的变量赋对于多重循环,特别要注意给与循环有关的变量赋初值

    14、的位置;初值的位置;内、外循环变量不能出现循环控制混乱,导致死循内、外循环变量不能出现循环控制混乱,导致死循环或计算结果错误;环或计算结果错误;应正确编写内、外循环的循环体,需要在内循环中应正确编写内、外循环的循环体,需要在内循环中执行的所有语句必须用执行的所有语句必须用括起来组成复合语句作为括起来组成复合语句作为内循环体;属于外循环的语句应放在内循环体之外内循环体;属于外循环的语句应放在内循环体之外、外循环体之内;、外循环体之内;不应在循环中执行的操作应放在进入最外层循环之不应在循环中执行的操作应放在进入最外层循环之前或最外层循环结束之后;前或最外层循环结束之后;19循环嵌套应用举例循环嵌套

    15、应用举例【例例4-6】打印九九乘法表。打印九九乘法表。1 1*1=11=12 2*1=2 21=2 2*2=42=43 3*1=3 31=3 3*2=6 32=6 3*3=93=94 4*1=4 41=4 4*2=8 42=8 4*3=12 43=12 4*4=164=165 5*1=5 51=5 5*2=10 52=10 5*3=15 53=15 5*4=20 54=20 5*5=255=256 6*1=6 61=6 6*2=12 62=12 6*3=18 63=18 6*4=24 64=24 6*5=305=307 7*1=7 71=7 7*2=14 72=14 7*3=21 73=21

    16、7*4=28 74=28 7*5=35 75=35 7*6=426=428 8*1=8 81=8 8*2=16 82=16 8*3=24 83=24 8*4=32 84=32 8*5=40 85=40 8*6=48 86=48 8*7=567=569 9*1=9 91=9 9*2=18 92=18 9*3=27 93=27 9*4=36 94=36 9*5=45 95=45 9*6=54 96=54 9*7=64 97=64 9*8=72 98=72 9*9=819=81for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=1;j=i;j+)for(j=1;j=i;j+)pr

    17、intf(%d printf(%d*%d=%-4d,i,j,i%d=%-4d,i,j,i*j);j);printf(printf(nn););i=1i=1j=1j=1输出:输出:1 1*1=1 1=1 换行换行i=2i=2j=1j=1输出:输出:2 2*1=2 1=2 换行换行j=2j=2输出:输出:2 2*2=4 2=4 换行换行i=9i=9j=1j=1输出:输出:9 9*1=9 1=9 换行换行j=2j=2输出:输出:9 9*2=18 2=18 换行换行j=9j=9输出:输出:9 9*9=81 9=81 换行换行20循环嵌套应用举例循环嵌套应用举例【例例4.74.7】抓交通肇事犯。一辆卡车

    18、违反交通规则,撞人后逃跑。现场有三抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。出车号。for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=0;j=9;j+)for(

    19、j=0;j=9;j+)if(i!=j)if(i!=j)k=i k=i*1000+i1000+i*100+j100+j*10+j;10+j;for(c=31;c for(c=31;c*ck;c+);ck;c+);if(c if(c*c=k)printf(Lorry-No.is%d.n,k);c=k)printf(Lorry-No.is%d.n,k);21循环嵌套应用举例循环嵌套应用举例【例例4.84.8】从键盘上输入从键盘上输入n n的值为的值为5 5,编程打印具有如下,编程打印具有如下规律的对称图形。规律的对称图形。行号(行号(i i)空格数(空格数(j j)个数(个数(k k)-2-2 2

    20、2 1 1 -1 -1 1 1 3 3 0 0 0 0 5 5 1 1 1 1 3 3 2 2 2 2 1 1 fabs(i)fabs(i)n-2n-2*fabs(i)fabs(i)#includestdio.h#includestdio.h#includemath.h#includemath.hvoid main()void main()int i,j,k,n;int i,j,k,n;printf(printf(请输入一个小于大于请输入一个小于大于2 2且小于且小于8080的奇数:的奇数:););scanf(%d,&n);scanf(%d,&n);for(i=-n/2;i=n/2;i+)fo

    21、r(i=-n/2;i=n/2;i+)for(j=1;jfabs(i);j+)for(j=1;jfabs(i);j+)printf();printf();for(k=1;kn-2 for(k=1;kn-2*fabs(i);k+)fabs(i);k+)printf();printf();printf(n);printf(n);可以从可以从0 0开始吗?开始吗?22流程控制语句流程控制语句 在循环结构中,循环体一般都要执行到循环条件在循环结构中,循环体一般都要执行到循环条件不成立的时候才会退出循环。但是解决实际问题时,不成立的时候才会退出循环。但是解决实际问题时,常遇到一些特殊的情况需要中途退出循环

    22、体,或者某常遇到一些特殊的情况需要中途退出循环体,或者某次循环时不希望执行循环体中的某些语句,这时就需次循环时不希望执行循环体中的某些语句,这时就需要使用到流程控制语句。要使用到流程控制语句。breakbreak语句语句:终止循环语句,使程序执行跳出循终止循环语句,使程序执行跳出循环体。环体。continuecontinue语句语句:中断循环体的本次执行(跳过循环中断循环体的本次执行(跳过循环体中尚未执行的语句),立即开始执行下一次循环。体中尚未执行的语句),立即开始执行下一次循环。23break语句语句 语句形式为:语句形式为:break;break;表达式表达式2 2?part1part1

    23、非非0(0(真真)0(0(假假)后续语句后续语句表达式表达式1 1表达式表达式3 3结束表达式结束表达式?非非0(0(真真)0(0(假假)forforpart2part2for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3)part1;part1;if(if(结束表达式结束表达式)break;)break;part2;part2;后续语句;后续语句;24break语句应用举例语句应用举例 【例例4.94.9】输入一个正整数输入一个正整数m m,判断它是否为素数。素,判断它是否为素数。素数就是只能被数就是只能被1 1和自身整除的正整数,和自身整除的正整数,1 1不是素数,不

    24、是素数,2 2是素是素数。数。#includestdio.h#includestdio.h#includemath.h#includemath.hvoid main()void main()int i,m,n;int i,m,n;printf(Enter a number:);printf(Enter a number:);scanf(%d,&m);scanf(%d,&m);n=(int)sqrt(m);n=(int)sqrt(m);for(i=2;i=n;i+)for(i=2;in)printf(%d is a prime number!n,m);if(in)printf(%d is a p

    25、rime number!n,m);else printf(%d is not a prime number!n,m);else printf(%d is not a prime number!n,m);25continue语句语句 语句形式为:语句形式为:continue;continue;for(for(表达式表达式1;1;表达表达式式2;2;表达式表达式3)3)part1;part1;if(if(结束表达式结束表达式)continue;continue;part2;part2;后续语句;后续语句;while(while(表达式表达式)part1;part1;if(if(结束表达式结束表达式

    26、)continue;)continue;part2;part2;后续语句;后续语句;dodo part1;part1;if(if(结束表达式结束表达式)continue;)continue;part2;part2;while(while(表达式表达式););后续语句后续语句;part1part1非非0(0(真真)后续语句后续语句part2part2结束表达式?结束表达式?0(0(假假)whilewhile非非0(0(真真)表达式?表达式?0(0(假假)26算法解析算法解析 【例例4.114.11】计算计算1-1/2+1/3-1/4+.+1/99-1/1001-1/2+1/3-1/4+.+1/9

    27、9-1/100的前的前n n项的值,项的值,n n从键盘输入,从键盘输入,n n大于大于1 1,小于,小于100100。int n,i,flag=1;int n,i,flag=1;double sum=0.0;double sum=0.0;printf(nn=);printf(nn=);while(1)while(1)scanf(%d,&n);scanf(%d,&n);if(n1&n1&n100)break;else printf(“data error!input again!n”);else printf(“data error!input again!n”);for(i=1;i=n;i+

    28、)for(i=1;i=a&c=a&c=A&c=A&c=0&c=0&c=9)number+;else if(c=)space+;else if(c=)space+;else other+;else other+;28算法解析算法解析 【例例4.154.15】百钱百鸡问题。中国古代数学家张丘建在他的百钱百鸡问题。中国古代数学家张丘建在他的算经算经中提出了闻名的中提出了闻名的“百钱买百鸡问题百钱买百鸡问题”:鸡翁一,值钱五,鸡母一:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?int x,y,z,j=0;in

    29、t x,y,z,j=0;printf(Following are possible plans:n);printf(Following are possible plans:n);for(x=0;x=20;x+)for(x=0;x=20;x+)for(y=0;y=33;y+)for(y=0;y=33;y+)z=100-x-y;z=100-x-y;if(z%3=0&5if(z%3=0&5*x+3x+3*y+z/3=100)y+z/3=100)printf(%2d:cock=%2d hen=%2d chicken=%2dn,+j,x,y,z);printf(%2d:cock=%2d hen=%2d

    30、 chicken=%2dn,+j,x,y,z);29算法解析算法解析 【例例4.164.16】猜数游戏。猜数游戏。使用随机数函数需要包含头文件使用随机数函数需要包含头文件stdlib.hstdlib.h。函数函数rand()rand()是随机数生成器,可以设定生成数的范围,如生成是随机数生成器,可以设定生成数的范围,如生成A A与与B B之间的随机整数之间的随机整数i i(AA随机数随机数i Bi num)printf(Wrong!Too big!n);if(guessnum)printf(Wrong!Too big!n);else if(guessnum)printf(Wrong!Too s

    31、mall!n);else if(guessnum)printf(Wrong!Too small!n);else printf(Right!n);else printf(Right!n);while(guess!=num);while(guess!=num);printf(Count=%dn,count);printf(Count=%dn,count);30|语句语句while(!E);while(!E);中的表达式!中的表达式!E E等价于等价于 A)E=0 B)E!=1 C)E!=0 D)E=1 A)E=0 B)E!=1 C)E!=0 D)E=1|下面程序段的运行结果是下面程序段的运行结果是

    32、_。a=1;b=2;c=2;a=1;b=2;c=2;while(abc)t=a;a=b;b=t;c-;while(abc)t=a;a=b;b=t;c-;printf(%d,%d,%d,a,b,c);printf(%d,%d,%d,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1|下面程序段的运行结果是下面程序段的运行结果是_。x=y=0;x=y=0;while(x15)y+;x+=+y;while(x10&x10&x50)x+;x+;if(x/3)x+;break;else continue;if(x/3

    33、)x+;break;else continue;printf(%dn,x);printf(%dn,x);|执行以下程序后,输出执行以下程序后,输出#号的个数是号的个数是_。main()main()int i,j;int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);32复习第四章复习第四章预习第五章预习第五章完成完成习题与上机实践习题与上机实践第四章的习题第四章的习题上机实习内容:上机实习内容:完成完成“三、实验三、实验”的相关内容的相关内容 完成完成“二、习题二、习题(三)编程题(三)编程题”并提交并提交C语语言程序言程序设计设计

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言程序设计课件第4章循环结构.ppt
    链接地址:https://www.163wenku.com/p-3714490.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库