




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章循环结构,5.1while语句5.2do-while语句5.3for语句5.4循环嵌套5.5break语句与continue语句5.6程序举例,例5.1:计算:1+2+3+100,intsum;sum=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+;/不合适,sum=0;sum+=1;sum+=2;sum+=3;sum+=100;printf(sum=%dn,sum);,改进:i=1;sum=0;sum+=i;i+=1;如果i=100,跳到输出sum,5.1while语句,1、格式:while(表达式)循环体语句,2、功能:先计算表达式的值,值为非时重复执行循环体直到表达式值为时退出循环,跳转到循环体之后的语句执行,例5.1计算:1+2+3+100,i=100?,sum+=ii=i+1,while(i=100)sum+=i;i=i+1;,例5.1:计算1+2+3+100,while(i=100)sum+=i;i+;,i=1;sum=0;,#includevoidmain(),inti,sum;,printf(sum=%dn,sum);,sum=0;i=1;,?,i+;sum+=i;,?,EG208.C,编程原则:改变位置后,只要不影响后面的使用(计算结果)即可。,例5.2输入若干个数,以0作为结束标志,计算并输出这些数的平均值(0不计算在内)。,分析:定义三个变量:x:存放输入的数sum:存放各数的和;count:计数,while(x!=0)sum+=x;count+=1;,scanf(%f,scanf(%f,sum=0;count=0;,EG209.C,#includevoidmain()floatsum,x,count;sum=0;count=0;scanf(%f,EG209.C,注意:循环结束的条件?循环体要完成哪些操作?在循环体的最后读入下一个值,以不断的得到新值while语句之前应该完成哪些操作?,例5.3输入一行字符,以n作为结束标志,计算字符个数。,scanf(%c,#includevoidmain()charch;intcount=0;printf(count=%dn,count);,#includevoidmain()intcount=0;while(getchar()!=n)count+;printf(count=%dn,count);,字符输入函数getchar()用法:ch=getchar()作用:从键盘读入一个字符赋值给变量ch,字符输出函数putchar()用法:putchar(ch);或:putchar(A);,EG210.C,3、while语句的特点:先判断表达式,然后执行循环体。若表达式一开始就不成立,则循环体一次也不执行。,4、注意:、在循环之前需要给某些变量赋值(循环变量赋初值);、循环体中应有使循环趋于结束的语句;、循环部分为多个语句时,必须用大括号构成复合语句。,i=1;sum=0;while(i=100)sum=sum+i;i+;,sum=0;count=0;scanf(%f,scanf(%c,5.2do-while语句,1、格式:,do循环体语句while(表达式);,2、功能:先执行一遍循环体,然后计算表达式的值,若值为真(非0),返回重复执行循环体;直到表达式的值为假(0)时结束循环。,3、特点:先执行循环体,后判断表达式(循环条件)是否成立,即循环体至少执行一次。,4、推荐书写格式:,do.while(.);,例5.4:计算1+2+3+100,sum+=ii+,i=100?,dosum+=i;i+;while(i=0,EG212.C,5.3for语句,1、格式:,for(表达式1;表达式2;表达式3)循环体语句,2、功能:、先求解表达式1(给循环控制变量赋初值)、求解表达式2,若为真(非0),执行循环体;若为假(0),结束循环、求解表达式3(改变了表达式2中某个变量的值)、返回,for(i=1;i=100;i+)sum+=i;,例5.5:计算sum=1+2+3+100,#includevoidmain()inti,sum=0;for(i=1;i=100;i+)sum+=i;printf(sum=%dn,sum);,EG213.C,例5.6:计算1+3+5+7+n(n为奇数),#includevoidmain()inti,sum=0,n;scanf(%d,for语句可以写成以下形式:,sum=0;i=1;for(;i=n;i+=2)sum+=i;,sum=0;i=1;for(;i=n;)sum+=i;i+=2;,for(i=1,sum=0;i=n;i+=2)sum+=i;,EG214.C,4、说明,、for语句的表达式可以缺省,但两个分号不能缺省;,、若在for语句之前已经对循环控制变量赋初值,则表达式1可以缺省;,i=1;for(;i=100;i+)sum=sum+i;,for(i=1;i100)break;sum=sum+i;,、表达式3也可以缺省,但应设法修改循环控制变量,保证程序正常结束,for(i=1;i=100;)sum=sum+i;i+;,、可以同时省略表达式1和表达式3,即只给循环条件。,i=0;for(;i=100;)sum=sum+i;i+;,此时,等同于while语句。,、3个表达式都可以省略,如:,for(;)循环体;,while(1)循环体;,将无终止的执行循环。从语法上讲是正确的,但一般没有实际意义。,、for语句中的表达式1和表达式3可以由一个或多个赋值表达式组成,当为多个表达式时,各表达式之间要用逗号运算符(即组成逗号表达式)。,for(sum=0,i=1;i=100;i+)sum=sum+i;,例5.7打印九九乘法表。,for(i=1;i=9;i+),for(j=1;j=i;j+)printf(%d*%d=%-4d,i,j,i*j);printf(n);,#includevoidmain()inti,j;,例5.8打印101-200之间的全部素数。,判断m是否是素数可以让m被2、3、4去除,若能被其中的任何一个数整除,则证明不是素数;相反,若不能被所有数整除,则证明是素数。,for(m=101;m=200;m+=2),k=(int)sqrt(m);for(i=2;i=k;i+)if(m%i=0)break;,if()printf(%-5d,m);,i=k+1,5.4循环嵌套,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。内层的循环中还可以嵌套循环,构成多重循环。三种循环可以相互嵌套。例:,while()while(),for(;)for(;),while()for(;),例5.9输出如图所示的等腰三角形:,*,特点:第i行有_个星号!一共有6行,第i行的第1个星号前有_个空格,2*i-1,6-i,for(i=1;i=6;i+)输出6-i个空格输出2*i-1个*换行,#includevoidmain()inti,j;for(i=1;i=6;i+)putchar(n);,for(j=1;j=6-i;j+)putchar(32);,for(j=1;j=2*i-1;j+)putchar(*);,EG217.C,几种循环的比较:,、C语言中的三种循环结构都由表达式控制执行一个循环体,一般情况下可以相互代替;、用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成;而for语句一般在表达式1中实现循环变量的初始化;、当循环次数及控制条件要在程序运行过程中确定时,选用while或do-while语句;、在初值、增量及控制条件明显,或循环次数已经给定的情况下,选用for语句;,、在循环的执行过程中,应不断的改变循环控制表达式的值,以便逐步形成使它为的条件,否则将可能出现死循环;,、三种循环可以相互嵌套,形成多重循环,外循环可以包含多个或多重内循环,循环之间可以并列但不能相交,并列的循环控制变量可以同名,但嵌套的循环控制变量不能同名;、不允许用其它的控制语句把程序流程从循环体外转入循环体内,但必要时可以用break、goto等语句把流程从循环体内转到循环体外。,5.5break语句和continue语句,5.5.1break语句,1、格式:,break;,2、功能:中止当前循环语句或switch语句的执行,3、说明:、若是多重循环,break只能使流程跳出离break最近的一层;、break只用于switch语句和循环语句。,例5.8打印101-200之间的全部素数。,EG218.C,for(m=101;m=200;m+=2)k=(int)sqrt(m);for(i=2;i=1E-6)sum+=t;n=n+2;t=1/n;printf(sum=%fn,sum);,EG221.C,EG222.C,例5.11用以下公式计算的近似值。知直到最后一项的绝对值小于10-8。,while(fabs(t)=1E-8)sum+=t;i+=2;sign*=-1;t=sign*1/i;,sum=0;i=1;t=1;sign=1;,问题:用哪种循环语句?表达式如何写?,fabs(t)=1E-8,如何使符号发生变化?变量的类型?,EG222.C,例5.12用迭代法求方程x=cosx的根,要求误差小于10-6。,doublex1,x2;x1=0;x2=cos(x1);while(fabs(x2-x1)=1E-6)x1=x2;x2=cos(x1);printf(x=%fn,x2);,迭代法求根的步骤为:令x1=0,x2=cosx1;如果|x2-x1|=10-6,执行x1=x2,并重复执行步骤(1);否则执行步骤(3)。计算结束,输出结果。,EG222.C,例5.13计算Fibonacci数列,直到某项大于1000为止,并输出该项的值。,intf1,f2,f;dof=f1+f2;f1=f2;f2=f;while(f=1000);printf(%dn,f);,递推的步骤为:令f1=1,f2=1;f=f1+f2,f1=f2,f2=f;如果f1000,重复执行步骤(2);否则执行步骤(4)。计算结束,输出f的值。,EG222.C,例5.14计算s=1+2+3+i,直到累加和大于5000为止,并输出s和i的值。,inti,s;i=1;s=0;while(s5000)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学(小数加减运算)计算题专项练习与答案
- 2025西安中振科技控股集团有限公司招聘备考考试题库附答案解析
- 2025新疆兵团第十三师红星实验幼儿园招聘编外教师(3人)考试参考题库及答案解析
- 2025年广西壮族自治区生殖医院第三季度招聘7人备考考试题库附答案解析
- 人工智能助力企业升级合作合同
- 物业管理合同样本与纠纷处理案例
- 广告业务合作与媒体投放协议
- 专业培训学校招生推广合作协议
- 2025内蒙古包头白云鄂博矿区消防救援大队补充招聘专职消防员5人备考考试题库附答案解析
- 2025年黄山祁门县融媒体中心公开招聘播音员(主持人)2名备考考试题库附答案解析
- 拆除工程安全监理细则(3篇)
- 数字产品服务使用协议书
- 中国邮政储蓄银行个人额借款合同4篇
- 重庆市南开中学高2025-2026学年高三上学期开学第一次检测语文试卷
- (人教版2017课标)高中物理必修第三册 第十章综合测试及答案03
- 4人合股合同协议书范本
- 【2025年】铁路机车车辆驾驶员资格考试模拟试卷(410题)及参考答案
- 【2025年】全民科学素质竞赛网络知识竞赛考试试卷题库(290题)附答案
- 2023-2025年高考生物试题分类汇编:孟德尔两大遗传定律原卷版
- 2025年机器人标准化行业发展趋势分析报告
- 机械检验考试试题及答案
评论
0/150
提交评论