欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:69172729       资源大小:2.76MB        全文页数:33页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    C语言程序言程序设计第第4章章 循环结构循环结构2本章主要本章主要内内容容 1.循循环结构构设计理念理念 2.for循循环语句句 3.while循循环语句句 4.dowhile循循环语句句 5.循循环嵌套嵌套 6.流程控制流程控制语句句3循循环结构构程序程序设计所谓循环是指使用一定条件对同一个程序段重复执行所谓循环是指使用一定条件对同一个程序段重复执行若干次。被重复执行的部分称为循环体。若干次。被重复执行的部分称为循环体。循环设计步骤循环设计步骤:step1:构造循环体构造循环体step2:寻找控制循环的变量寻找控制循环的变量step3:找出控制循环变量的找出控制循环变量的3个要素:初值、继个要素:初值、继续循环的条件、使循环趋于结束的部分。续循环的条件、使循环趋于结束的部分。4循循环控制控制的的两种两种方法方法标志志法法主要用在循主要用在循环次数不确定的情况下。基本思想次数不确定的情况下。基本思想是:是:设置一个置一个标志志变量,量,标志志变量的量的值随着循随着循环发生生变化。每循化。每循环一次,就一次,就测试一次一次标志志变量的量的值,当,当标志志变量的量的值满足指定条件足指定条件时,结束循束循环。计数数法法主要用在循主要用在循环次数确定的情况下。基本思想次数确定的情况下。基本思想是是:设置一置一计数数变量,称量,称为计数器。循数器。循环开始开始前前给出初始出初始值,每循,每循环一次,一次,计数数变量增量增1(即(即计一次数),直到一次数),直到计数数变量的量的值到达指到达指定次数。定次数。5C循循环语句句for语句while语句do-while语句6for语句语句语法形式:语法形式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体;循环体;执行过程:执行过程:step1:先求解表达式先求解表达式1,表达式,表达式1只执行一次,一般是赋值语只执行一次,一般是赋值语句,用于初始化循环变量。句,用于初始化循环变量。step2:求解表达式求解表达式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真真*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(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的整数,统计该数的的整数,统计该数的位数。位数。#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+;number=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=x)while(n=x)sum+=tn;sum+=tn;tn=tn*10+a;tn=tn*10+a;n+;n+;循环次数循环次数循环条件循环条件sumsum值值tntn值值n n值值第第1 1次次1=41=4为真为真0+20+22*10+22*10+22 2第第2 2次次2=42=4为真为真2+222+2222*10+222*10+23 3第第3 3次次3=43=4为真为真24+22224+222222*10+2222*10+24 4第第4 4次次4=44=4为真为真246+2222246+22222222*10+22222*10+25 5第第5 5次次5=45=4为假为假14想一想?想一想?while(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-while循循环,执行后续语句。环,执行后续语句。表达式?表达式?循环体循环体非非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,&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循环嵌套循环嵌套 循环语句可以嵌套。在循环体语句中又包含另一循环语句可以嵌套。在循环体语句中又包含另一个完整的循环结构的形式,称为循环的嵌套。个完整的循环结构的形式,称为循环的嵌套。嵌套在循环体内的循环称为内循环,外面的循环嵌套在循环体内的循环称为内循环,外面的循环称为外循环。称为外循环。如果内循环体中又有嵌套的循环语句,则构成多如果内循环体中又有嵌套的循环语句,则构成多重循环。重循环。for、while、do-while循环语句既可以并列,也循环语句既可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉可以相互嵌套,但要层次清楚,不能出现交叉 。18循环嵌套的原则循环嵌套的原则对于多重循环,特别要注意给与循环有关的变量赋对于多重循环,特别要注意给与循环有关的变量赋初值的位置;初值的位置;内、外循环变量不能出现循环控制混乱,导致死循内、外循环变量不能出现循环控制混乱,导致死循环或计算结果错误;环或计算结果错误;应正确编写内、外循环的循环体,需要在内循环中应正确编写内、外循环的循环体,需要在内循环中执行的所有语句必须用执行的所有语句必须用括起来组成复合语句作为括起来组成复合语句作为内循环体;属于外循环的语句应放在内循环体之外、内循环体;属于外循环的语句应放在内循环体之外、外循环体之内;外循环体之内;不应在循环中执行的操作应放在进入最外层循环之不应在循环中执行的操作应放在进入最外层循环之前或最外层循环结束之后;前或最外层循环结束之后;19循环嵌套应用举例循环嵌套应用举例【例例4-6】打印九九乘法表。打印九九乘法表。1*1=11*1=12*1=2 2*2=42*1=2 2*2=43*1=3 3*2=6 3*3=93*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=164*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=255*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18 6*4=24 6*5=306*1=6 6*2=12 6*3=18 6*4=24 6*5=307*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=427*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=428*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=568*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=569*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=64 9*8=72 9*9=819*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=64 9*8=72 9*9=81for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=1;j=i;j+)for(j=1;j=i;j+)printf(%d*%d=%-4d,i,j,i*j);printf(%d*%d=%-4d,i,j,i*j);printf(printf(nn););i=1i=1j=1j=1输出:输出:1*1=1 1*1=1 换行换行i=2i=2j=1j=1输出:输出:2*1=2 2*1=2 换行换行j=2j=2输出:输出:2*2=4 2*2=4 换行换行i=9i=9j=1j=1输出:输出:9*1=9 9*1=9 换行换行j=2j=2输出:输出:9*2=18 9*2=18 换行换行j=9j=9输出:输出:9*9=81 9*9=81 换行换行20循环嵌套应用举例循环嵌套应用举例【例例4.74.7】抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。出车号。for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=0;j=9;j+)for(j=0;j=9;j+)if(i!=j)if(i!=j)k=i*1000+i*100+j*10+j;k=i*1000+i*100+j*10+j;for(c=31;c*ck;c+);for(c=31;c*ck;c+);if(c*c=k)printf(Lorry-No.is%d.n,k);if(c*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 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-2*fabs(i)n-2*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+)for(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*fabs(i);k+)for(k=1;kn-2*fabs(i);k+)printf();printf();printf(n);printf(n);可以从可以从0 0开始吗?开始吗?22流程控制语句流程控制语句 在循环结构中,循环体一般都要执行到循环条件在循环结构中,循环体一般都要执行到循环条件不成立的时候才会退出循环。但是解决实际问题时,不成立的时候才会退出循环。但是解决实际问题时,常遇到一些特殊的情况需要中途退出循环体,或者某常遇到一些特殊的情况需要中途退出循环体,或者某次循环时不希望执行循环体中的某些语句,这时就需次循环时不希望执行循环体中的某些语句,这时就需要使用到流程控制语句。要使用到流程控制语句。breakbreak语句语句:终止循环语句,使程序执行跳出循终止循环语句,使程序执行跳出循环体。环体。continuecontinue语句语句:中断循环体的本次执行(跳过循环中断循环体的本次执行(跳过循环体中尚未执行的语句),立即开始执行下一次循环。体中尚未执行的语句),立即开始执行下一次循环。23break语句语句 语句形式为:语句形式为:break;break;表达式表达式2 2?part1part1非非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不是素数,不是素数,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 prime 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(结结束束表表达达式式)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/99-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(else printf(“data error!input again!ndata error!input again!n”););for(i=1;i=n;i+)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;int 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&5*x+3*y+z/3=100)if(z%3=0&5*x+3*y+z/3=100)printf(%2d:cock=%2d hen=%2d chicken=%2dn,+j,x,y,z);printf(%2d:cock=%2d hen=%2d 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 small!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=1A)E=0 B)E!=1 C)E!=0 D)E=1 下面程序段的运行结果是下面程序段的运行结果是_。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)x+;break;else continue;printf(%dn,x);printf(%dn,x);执行以下程序后,输出执行以下程序后,输出#号的个数是号的个数是_。main()main()int i,j;int i,j;for(i=1;i5;i+)for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);for(j=2;j=i;j+)putchar(#);32本章课后作业本章课后作业复习第四章复习第四章预习第五章预习第五章完成完成习题与上机实践习题与上机实践第四章的习题第四章的习题上机实习内容:上机实习内容:完成完成“三、实验三、实验”的相关内容的相关内容 完成完成“二、习题二、习题(三)编程题(三)编程题”并提交并提交C语言程序言程序设计

    注意事项

    本文(C语言程序设计课件 第4章 循环结构.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开