




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第三章,基本程序设计,3.1选择结构程序设计,if语句的三种基本形式,模式1:单选择if语句语句格式:if(条件)语句组;,功能:判断条件为真时执行语句,否则跳过语句,模式2:双选择if语句,5.1if语句,语句格式:if(条件)语句组1;else语句组2;,功能:判断条件为真时执行语句组1,否则执行语句组2,模式3:多条件的if语句,语句格式:if(条件1)语句1;elseif(条件2)语句2;elseif(条件3)语句3;elseif(条件m)语句m;else语句n;,功能:从多组语句中选择满足条件的语句组执行。,(1)三种形式的if语句中,if关键词后面均为表达式。通常为关系表达式或逻辑表达式。也可以是其它表达式,如赋值表达式,甚至也可以是一个变量。例如:if(a=5)语句;或if(b)语句;均为合法用法,(2)if后的条件判断表达式一定用圆括号括起来,语句之后一定要用分号。,使用if语句时注意:,(3)三种形式中,若为一组语句一定用括起来,组成复合语句。但需注意后不可用“;”号。,例如:if(ab)a+;b+;elsea=0;b=10;,运行:23X=23,y=1,if语句的嵌套:,if语句中又含有if语句的形式称为if语句的嵌套。,说明:每一个if与else相匹配,也可能不与else相匹配;但是每一个else必须与一个if相匹配。else与if匹配的原则是:最后的else总是与它上面最近的if配对。多分支及分支嵌套应采用缩排方式,以增加程序的可读性。,例:if(a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,修改:if(a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,实现ifelse正确配对方法:加,例考虑下面程序输出结果:main()intx=100,a=10,b=20;intv1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;elseif(v2)x=10;/*x=-1;*/printf(“%d”,x);,结果:100,结果:-1,x=-1;,例:体型判断,按“体指数”对肥胖程度进行划分:体指数t=w/h2(体重w单位为公斤,身高h单位为米)当t18时,为低体重;当18t25时,为正常体重;当25t27时,为超重体重;当t27时,为肥胖。编程从键盘输入你的身高h和体重w,判断你的体重属于何种类型。,例,#includemain()floath,w,t;printf(Pleaseenterh,w:);scanf(%f%f,当t18时,为低体重;当18t25时,为正常体重;当25t27时,为超重体重;当t27时,为肥胖。,#includemain()floath,w,t;printf(Pleaseenterh,w:);scanf(%f%f,182527,例,当t18时,为低体重;当18t25时,为正常体重;当25t27时,为超重体重;当t27时,为肥胖。,【例3-6】程序举例,运输公司对用户计算运费。路程()越远,每公里运费越低。标准如下:没有折扣折扣折扣折扣折扣折扣设每公里每吨货物的基本运费为,货物重为,距离为,折扣为,则总运费的计算公式为:*(),if(s250)d=0;elseif(s500)d=2;elseif(s1000)d=5;elseif(s2000)d=8;elseif(s3000)d=10;elsed=15;,1.嵌套条件语句实现,分析折扣变化的规律性:,折扣的“变化点”都是250的倍数在横轴上加一种坐标,c的值为s/250。c代表250的倍数。,无折扣;,;,;,;,;,。,考虑用switchcase结构,switch(c)case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;default:d=15;break;,2.switch语句实现,switch和else-if的比较,else-if比switch的条件控制更强大一些else-if可以依照各种逻辑运算的结果进行流程控制switch只能进行=判断,并且只能是整数判断switch比else-if更清晰两者都要尽量避免用得过多、过长,尤其不要嵌套得太多,它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错,for循环while循环dowhile循环,3.2循环结构设计,for循环说明:(1)最简单的应用形式:for(循环变量赋初值;循环条件;循环变量增值)语句例如:for(i=1;i=10;i+)s=s*i;(2)三个表达式均可缺省,但起分割作用的两个分号不可省。例如:for(;)等效于while(1)表达式1省略,应在for之前对循环变量赋初值,i=1;for(;i=5;i+)printf(“%dn”,i);,for(i=1;i=5;i+)printf(“%dn”,i);,表达式2省略,则不判断条件,循环无终止进行下去,表达式3省略,则应另设法保证循环的结束此功能一定在循环体中完成例:for(i=1;i=5;)printf(“%dn”,i);i+;(3)表达式1和表达式3可为逗号表达式,因此可以对多个变量赋初值及修改例如:for(i=1,j=10;i=j;i+,j-)k=i+j;,原则上表达式2不可省略,若省略需要在循环体中用其它手段(break、goto等)结束循环。,(4)for语句的循环体还可为另一个循环语句,for(i=1;i=2;i+)for(j=1;j=2;j+)printf(“%3d”,i+j);printf(“n”);,output:2334,例如:,do-while语句,do语句;while(表达式);功能:先执行循环体,然后计算表达式值,其值若为真(非0)则继续执行循环体,直到表达式为假时为止。,【例】while和do-while循环的比较,(1)voidmain()inti,sum=0;scanf(%d,(2)voidmain()inti,sum=0;scanf(%d,printf(sum=%dn,sum);,循环至少执行一次,循环没有被执行,输入:12输出:sum=12,输入:12输出:sum=0,三种循环语句的比较1for语句与while语句执行过程相同,但for语句简洁、清晰,它将初始条件、判断条件和循环变量的在一行书写,显得直观、明了。2while和do-while语句的循环控制变量初始化是在循环语句之前完成,而for语句循环变量的初始化是在for中(表达式1)中,也可以在for语句前实现。3for语句和while语句是判断条件后执行循环体;而do-while是先执行循环体后判断条件,无论条件是否满足都要执行一次循环体。,选择三种循环的一般原则,如果循环次数已知,用for如果循环次数未知,用while如果循环体至少要执行一次,用do-while这只是“一般”原则,不是“原则”,注意,在for和while语句之后一般没有分号有分号表示循环体就是分号之前的内容(空循环体)while(i100);i+;for(i=0;i100;i+);printf(%d,i);for通常有一个循环变量控制循环的次数,不要在循环体内改变这个变量,循环嵌套结构规划,外循环,内循环,交叉循环,外循环入口,内循环出口,内循环出口,外循环出口,循环嵌套,在循环体中,又包含有循环结构即构成循环嵌套,123456789-12436948121651015202561218243036714212835424981624324048566491827364554637281,行循环中包含列循环,问题:,5.2.1switch语句格式,输出下三角形乘法九九表,例,123456789-12436948121651015202561218243036714212835424981624324048566491827364554637281,思路:行号为i,列号为j,(1=i=9),(1=j=i),则:第i行中一共要输出i个乘积,i=7j=5i*j,#includemain()inti=1,j;/*i:行计数器j:列计数器*/while(i=9)/*控制打印表头*/printf(%4d,i+);printf(n-n);for(i=1;i=9;i+)/*行循环入口*/j=1;/*列计数器置1*/while(j=i)/*嵌套的内循环。输出第i行*/printf(“%4d”,i*j);/*输出乘积*/j+;/*列计数器+1*/printf(n);/*一行输出结束后,输出n*/,打印九九乘法表(三角形),内循环终值与外循环变量有关,用for语句实现打印乘法九九表(三角形),#includemain()inti,j;for(i=1;i10;i+)printf(“%4d”,i);/*打印表头*/printf(n-n);for(i=1;i10;i+)/*控制打印表体*/for(j=1;j=i;j+)printf(j=i)?%4dn:%4d,i*j);,若要打印完整的九九乘法表,则哪里需要修改?,穷举法程序设计,从搜索技术角度讲,穷举法可视为最简单的搜索:即是在一个可行状态集合中依次遍历所有的元素,并判断该元素是否为所需要的状态。,使用穷举法时,要恰当地设计变量,并且决定用哪些变量作为搜索的主线,以便穷举出所有可能情况。,一般使用循环结构,要注意循环的起点和终点,对可能的情况不能遗漏,一般也不应重复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程现场管理员劳务合同4篇
- 瓶中吹气球原理课件
- 理疗仪器的应用课件
- 吊装方案是什么工程(3篇)
- 废弃工程头盔利用方案(3篇)
- 广西桂平市凯信新型建材环境影响报告表
- 聚焦群文浸润德育
- 农业无人机租赁服务平台运营模式创新与市场竞争力提升报告
- 隔断房建设工程方案(3篇)
- 电力电站工程维护方案(3篇)
- 象棋入门课件教学
- 2024年3dmax模型制作与精修培训课件
- 咨询类合同合同范例
- Vue3系统入门与项目实战
- 旅游产品开发与设计作业指导书
- 中职语文职业模块1.2《宁夏闽宁镇:昔日干沙滩-今日金沙滩》教案
- 3.2 摩擦力 课件 高一上学期物理人教版(2019)必修第一册
- 2024年指标房转让买卖合同范本
- 水土保持工程概(估)算编制规定
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 2024年海南省中职教师技能大赛-新能源汽车维修 赛项规程
评论
0/150
提交评论