版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章循
环
结
构
1本章主要内容
5.1工作场景导入
5.2while型循环
5.3do-while型循环
5.4for型循环
5.5其他控制语句
5.6回到工作场景
25.1工作场景导入3【工作场景】北京某毕业生需要贷款100万买房,贷款的银行年利率为7%,由于此同学工资水平有限,欲尽量拖延还款的结束日期,但其认为还款总金额不可超过150万。此外,银行规定,还款期限不得超过30年。试为此人编程求出满足他的要求的最大还款期限,得到如下图所示的输出结果(精确到年)。4【引导问题】(1)
如何通过循环控制结构来解决此问题?(2) 运用何种循环结构来具体描述此场景?(3) 循环结构(while、do-while或者for短语)具体如何使用?55.2while型循环
6例1:模拟一个超市收银系统,计算多件商品的总价格,当输入0时结束价格输入。75.2.1while结构的形式
语句格式:while(条件表达式){语句1;语句2;...语句n;}
语句功能:当条件表达式的值为真时,重复执行循环体中的各语句。其中表达式是循环条件,语句为循环体。先判断,后执行,若条件不成立,循环体有可能一次也不执行其循环结构的基本流程可用右图来表示。85.2.2while循环的语义
先计算表达式的值并判断,若表达式值为“真”(即非零值),则执行循环体中的语句;然后再计算再判断,如此重复,直到表达式值为“假”(即0值)时,则跳出循环。
例编程实现求1+2+3+4+5+…+100的结果。程序代码如下:#include"stdio.h"main(){inti,sum;sum=0;i=1;
//赋初值while(i<=100){sum+=i;
//sum=sum+i,循环一次执行一次加法i++;
//改变被加数的值} printf("sum=%d\n",sum);//输出结果}9运行结果如下图所示。10练习从键盘接收多个学生的C语言程序设计这门课程的成绩,输入-1则结束输入。统计其中及格和不及格的学生人数,并计算平均分。115.3do-while型循环12语句格式:do{语句1;语句2;...语句n;}while(表达式);
--此处有分号语句功能:当条件表达式的值为真时,重复执行循环体中的各语句。若条件不成立,就跳出循环循环体至少执行一次while(表达式)后面的“;”不能少其循环结构的基本流程可用右图来表示。5.3.1结构形式135.3.2do-while循环的含义
do-while型循环是先执行后判断的循环,首先无条件地执行一次循环体中的语句,然后再判断表达式的值,若表达式值为“真”(即非零值),则执行循环体中的语句;然后再计算再判断,如此重复,直到表达式值为“假”(即0值)时,则跳出循环。
14while语句和do…while语句比较while语句是先判断后执行,只要不满足条件,循环体语句根本不会执行do…while语句是先执行后判断,不管条件是否满足,循环体语句总会执行一次#include<stdio.h>intmain(){inti=1,sum=0;while(i<=10){sum+=i; i++;}printf("%d",sum);return0;}#include<stdio.h>intmain(){inti=1,sum=0;do{sum+=i;i++;}while(i<=10);printf("%d",sum);return0;}15练习用do…while语句重新编写超市收银问题。将输入的正整数按逆序输出,例如,输入135,则输出531。165.4for型循环175.4.1for循环的表现形式语句格式:for(表达式1;表达式2;表达式3){语句1;语句2;...语句n;}表达式1:循环初始表达式,用于进入循环体前为循环变量赋初值。由算术、赋值、逻辑和逗号表达式构成。表达式2:循环控制表达式,用于控制循环体语句的执行次数。由关系表达式或逻辑表达式构成。表达式3:修改循环变量表达式,即每循环一次使得表达式1的值就要变化一次。由算术、赋值、逻辑或逗号表达式构成。语句功能:当表达式2的值为真时,执行循环体中的各语句。18上述的for循环格式只是一般的情况。在缺少表达式1或表达式2或表达式3时,我们来看看此时特殊的for循环将如何执行。(1) for(;表达式2;表达式3)该种格式常用于无需给变量赋初值的情况。(2) for(表达式1;;表达式3)即失去了对循环变量的控制,为此将导致无限循环。(3) for(表达式1;表达式2;)
即失去了修改循环变量值的操作,为此,在体内必须设有替代表达式3的功能。(4) for(;表达式2;)该种格式完全等价于while语句,即进入循环体前必须有赋初值语句,而且在体内要有修改循环变量的值的语句。(5) for(;;)完全等价于while(1)循环,是一个死循环。在设计程序时也要借助于本章后面一节要讲的break语句来结束死循环。5.4.2for语句的变型
19练习例:使用for循环实现1到100之和。例:求100-999之间的所有水仙花数。水仙花数:如果一个数的各个数位上的数字之立方和等于该数本身,则次数为水仙花数。如153=13+53+33#include<stdio.h>intmain(){inti,m,n,k;for(i=100;i<1000;i++){ m=i/100; k=i%10; n=(i-100*m)/10; if(i==m*m*m+n*n*n+k*k*k) printf("%d",i);}return0;}205.5其他控制语句
21break语句主要是用于switch结构和循环结构中,强制退出循环或跳出switch选择语句。其执行形式为:break;break语句在循环中,其功能是终止当前的循环,转向后续语句执行。下面给出各种循环语句中break语句的使用例子比较:while() dofor(;;){ { {... ......break; break; break;... ......} }while(); }5.5.1break语句22练习例:输出半径为1到10的圆的面积,若面积超过100,则结束输出。#include<stdio.h>#definePI3.1415926intmain(){intr;doublearea;for(r=1;r<=10;r++){ area=PI*r*r; if(area>100.0) break; printf("%.2lf",area);}return0;}其一般形式为:continue;该语句是专用于循环结构中改变某一次循环流程的语句。其作用是使程序流程提前结束本次循环,从而开始下一次循环。下面给出各种循环语句中continue语句的使用例子比较:while()dofor(;;){{{...... ...continue; continue;continue;...... ...}}while();}5.5.2continue语句
24练习完成下列程序:输出100~200之间不能被3整除的数#include<stdio.h>intmain(){intk;for(k=100;k<=200;k++){ if(k%3==0) continue; printf("%d",k);}return0;}#include<stdio.h>intmain(){intnum;for(num=100;num<=450;num++){if(num>150&&num<400)continue;if(num%9==0)printf("%6d",num);}
return0;}例:说出下列程序的功能:输出100~150之间和400~450之间能被9整除的数5.5.3循环语句的嵌套循环语句的嵌套:一个循环语句的循环体中又包含循环语句while(){……while(){……}…...}do{……do{……}while();…...}while();while(){……do{……}while();…….}for(;;){……do{……}while();……while(){……}…...}三种循环可互相嵌套,层数不限。外层循环可包含两个以上内循环,但不能相互交叉。嵌套循环的执行流程:外层循环执行一次,内层循环要执行完。嵌套循环的跳转:只能跳转出本层循环。禁止从外层跳入内层、禁止跳入同层的另一循环和向上跳转。练习例1:编写C语言程序,输出乘法九九表。练习例2:编写C程序,实现100元人民币换成1元、2元、5元的所有兑换方案。设i、j、k分别代表1元、2元和5元的数量则:i+2j+5k=100#include<stdio.h>intmain(){inti,j,k;for(i=0;i<=100;i++)for(j=0;j<=50;j++) for(k=0;k<=20;k++) if(i+2*j+5*k==100) printf("%d%d%d\n",i,j,k);return0;}5.6回到工作场景29通过对以上各小节内容的学习,我们了解了while语句、do-while语句以及for语句实现循环的过程之后,现在是时候回到我们5.1节的工作场景任务中了。运用循环结构控制的结束条件应该是本金和利息之和超过150万;本金和利息之和通过变量sum得到,即sum+=sum*0.07,循环最大次数可由银行还款最大期限决定,即通过i来控制最大循环次数。此处先用for循环实现该场景。30程序代码如下:#include<stdio.h>main(){inti;floatsum=1000000;//初始化为原贷款金额for(i=1;i<=30;i++){sum+=sum*0.07;//累加得到最终还款额if(sum>1500000)//程序出口,本息之和大于150万时,不满足题意 break;
}printf("最大年限为:%d\n",i-1);//注意为i-1,而非i}程序运行结果如右图所示。3132练习例:从键盘输入一个正整数,判断该数是否为素数。#include<stdio.h>#include<math.h>intmain(){inti,m,n;scanf("%d",&n);if(n<0){ printf("输入数据错误!\n"); exit(0);}m=sqrt(n);for(i=2;i<=m;i++)if(n%i==0)break;if(i>m) printf("%d是素数\n",
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 骏飞:2024年4月游戏衍生周边洞察报告
- 智慧课堂调查问卷
- 高考物理大一轮复习 考点规范练29 磁场对运动电荷的作用 新人教版-新人教版高三全册物理试题
- 高考生物一轮复习高考题分类汇编 第8单元 生物与环境 专题16 生态系统及生态环境的保护(必修3)-人教版高三必修3生物试题
- 2024年中考第三次模拟考试-道德与法治(重庆卷)(考试版A4)
- 高考物理一轮复习 分层限时跟踪练18 库伦定律、电场力的性质-人教版高三物理试题
- 畅想农业碳中和-一场新的绿色革命-绿色创新发展中心
- 2024届河北省衡中同卷高三下学期一模语文
- 2024年四川省自贡市六校联考中考模拟预测物理试题
- 2022高考数学全国II卷含解析
- 结肠癌的护理课件
- 四位数乘四位数乘法题500道
- 郑州煤炭工业(集团)有限责任公司芦沟煤矿矿产资源开采与生态修复方案
- 英语阅读知到章节答案智慧树2023年北京大学
- 学校食堂采购、报账流程
- 常见病针灸治疗讲义
- 城市轨道交通票务管理智慧树知到答案章节测试2023年山东职业学院
- 办公楼宿舍、员工宿舍、办公楼6S管理检查内容与考核考评标准
- 2023年毛概章题库整合版
- GB/T 35626-2017室外照明干扰光限制规范
- GB/T 26296-2010铝及铝合金阳极氧化膜和有机聚合物涂层缺陷
评论
0/150
提交评论