




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 选择结构程序设计5-1 比较单分支、双分支、多分支if语句。答:(1)多分支if语句可用多条单分支、双分支if语句等价实现。(2)双分支if语句形式上相当于单分支if语句扩展else分支而来。(3)单分支if语句可以认为是双分支if语句缺省else子句的特殊情况,一条双分支语句可用两条单分支语句实现。思考:分支结构主要用在哪些情况下?它有哪几种形式?5-2 , 下列描述哪些是正确的?(1)if (x=0) if(x0) y = 1 ; else y = 0 ; else y = -1 ; (3) y = -1 ; if(x!=0) if(x0) y = 1 ; else y = 0 ; (4)y = 0 ; if (x=0) if(x0) y = 1 ;答:(1) 正确 ; (2) 正确 ;(3) 不正确 ;(4) 不正确 ;思考 : 若将(3)改为: y = -1 ; (4) 改为:y = 0 ; if(x=0) /*删除原if(x=0)*/ if(x0) y =1 ; if(x0) y = 1 ; else y = 0 ; else y = -1 ; 后是否正确 ?5-3 仔细阅读以下程序 , 指出程序的运行结果 . #include main() int a , b ; a = b = 5 ; if(a=1) if(b=5) a+=b ; printf(a=%dn ,a) ; else a-=b ; printf(a=%dn,a) ; printf(a+b=%d,a+b) ; 解 : 结果为 : a + b = 10 思考: 为何有三个printf 语句 ,却只有一行输出 ? 如果将第5行去掉或改为if(a=5) , 结果是否一样 ?5-3仔细阅读以下程序 ,指出程序的运行结果 。解: #include main() int i =1 , j = 0 ,m = 1 ,n =2 ; switch(i+) case 1 : m+ ;n+ ; case 2 : switch(+j) case 1 : m+ ; case 2 : n+ ; case 3 : m+ ;n+ ; break ; case 4 :m+ ;n+ ;printf(m=%d,n=%d , m ,n) ;解 : 结果为 : m =4 ,n = 5 思考:将switch(i+)改为switch(i)结果有何变化?去掉“break:”语句后,结果有何变化? 5-5 仔细阅读以下程序,指出程序的运行结果 。 #include main() char ch ; printf(Enter ch: ) ; scanf(%c,&ch) ; switch(ch) case m : printf(Good morning !n) ; break ; case n : printf(Good night!n ) ; break ; default : printf(I can not understand!n) ; break ;printf(All right!n) ; 解 : 当输入m时结果为: Enter ch : m Good morning ! All right ! 当输入n时结果为: Enter ch : n Good night ! All right ! 当输入其它字符时结果为: Enter ch : k I can not understand ! All right ! 思考:当输入大写的与时,将会有什么结果?如果希望输入大写的M,N与输入小写的m、n时结果相同,程序如何修改? 5-6编写程序,求三个数的最小值。进一步考虑求四个数、五个数及更多的数的最小值及最大值.解:#include main() int a1 ,a2 ,a3 ,min ; scanf(%d,%d,%d,&a1,&a2,&a3) ; min = a1 ; if(a2min) min = a2 ; if(a3min) min = a3 ; printf(最小值为:%dn,min) ;思考:要求出最大值,是否将min改为max就可以了?关键应改什么地方 ?5-7 编写程序,解方程ax+b=0 .解: #include main() float a,b,x ; scanf(%f,%f,&a,&b) ; if(a=0) if(b=0) printf(x可为任意值!n) ; else printf(无解!n) ; else x=-b/a ; printf(方程的根为:%fn,x) ;思考 : 此题与习题2-14的程序有何不同之处?具有了什么功能? 5-8 编写程序,解方程ax2+bx+c=0。要求分别用if语句和switch语句实现 。 解 : (1) 用if语句实现。 #include #include main() float a,b,c,d,x,x1,x2 ; printf(请输入方程的三个系数a,b,c : ) ; scanf(%f,%f,%f,&a,&b ,&c) ; if(a=0) if(b=0) if(c=0) printf(x可为任意值!n) ; else printf(无解!n) ; else x=-c/b ; printf(方程的根=%fn,x) ;else d=b*b-4*a*c ; if(d=0) x1 = (-b+sqrt(d)/(2*a) ; x2 = (-b-sqrt(d)/(2*a) ; printf(第一个根=%f ,第二个根=%fn,x1,x2); else printf(方程无实根!n) ; (2) 用switch语句实现 。 #include #includemain() float a,b,c,d,x,x1,x2 ; printf(请输入方程的三个系数a,b,c : ) ; scanf(%f,%f,%f,&a,&b,&c) ;switch(int) a) /先判断a是否为0case 0: /如果a为0 switch(int) b) case 0: /如果b也为 0 switch(int) c) case 0: /如果c也为0 printf(x可为任意值!n) ;goto end ; default: printf(无解!n) ; goto end ; default: x=-c/b ;printf(方程的根为%fn,x) ; goto end ;default : / 如果a不为 0 d = b*b-4*a*c ; if(d=0) x1 = (-b+sqrt(d)/(2*a) ; x2 = (-b-sqrt(d)/(2*a) ;printf( 第一个根=%f ,第二个根=%fn,x1,x2); else printf(方程无实根!n) ; end: printf(“end”); 思考:if语句与switch语句的嵌套结构与形式有何特点?与单结构if语句的区别是什么? 5-9 编写程序,判断一个整数是否既是2的倍数、又是3的倍数。 解 : #include main()int n ,flag = 0 ; printf(请输入整数:) ; scanf(%d,&n) ; if(n%2=0)&(n%3=0) flag = 1 ; if(flag=0) printf(%d不能同时被2和被3整除n,n) ; else printf(%d能同时被2和被3整除n,n) ; 思考: flag的作用是什么?如果去掉flag,程序应该如何改动? 5-10 编写程序,判断2000年、2008年、2100年是否为闰年。 解:#include main()int y1 = 2000 ,y2 = 2008 , y3 = 2100 ; if(y1%400=0)|(y1%4=0&y1%100!=0) printf(%d年是闰年n,y1) ; else printf(%d年不是闰年n,y1) ; if(y2%400=0)|(y2%4=0&y2%100!=0) printf(%d年是闰年n,y2) ; else printf(%d年不是闰年n,y2) ; if(y3%400=0)|(y3%4=0&y3%100!=0) printf(%d年是闰年n,y3) ; else printf(%d年不是闰年n,y3); 思考 : 此题中的几个if结构是什么关系?注意找出其中的不同之处,你会发现什么?5-11编写程序,将五级记分成绩转换成百分制成绩,转换规则如下: A95,B85,C75,D65,E55 。解:#include main() int s = 0; char c ; printf(请输入五级记分的成绩:) ; scanf(%c,&c) ; switch(c) case A : case a : s =95 ; break ; case B : case b : s =85 ; break ; case C : case c : s =75 ; break ; case D : case d : s =65 ; break ; case E : case e : s =55 ; break ; default : s = 0 ; if(s=0) printf(输入错误n);else printf(五级分制%c对应百分制为%dn,c,s) ; 思考 : 此题中若去掉所有“break ;”语句,将会出现什么情况?5-12有一个不多于5位的正整数,求它的位数,同时求出它的每位数字。 解 : #include main() long n ; /*存放整数*/ int a1,a2,a3,a4,a5 ;/*存放各位的数*/ printf(请输入一个正整数(0) printf(有五位数,分别是%ld,%d,%d,%d,%dn,a5,a4,a3,a2,a1) ;else if(a40) printf(有四位数,分别是%d,%d,%d,%dn,a4,a3,a2,a1) ;else if(a30) printf(有三位数,分别是%d,%d,%dn,a3,a2,a1) ;else if(a20) printf(有二位数,分别是%d,%dn,a2,a1) ; else if(a10) printf(有一位数,分别是%dn,a1) ;else printf(输入数据非正整数或为0n) ;思考 :如何将一个整数的各位数字进行分离?你还能想出其它什么办法? 5-13 输入一个字符,编写程序判断该输入字符的种类:数字、字母或其它。 解 : #include main() char c ; printf(请输入字符:) ; scanf(%c,&c) ; if(c= a)&(c=A)&(c=0&c=9) printf(字符的种类是: 数字n) ; else printf(字符的种类是: 其它n) ; 思考 : 此题中的if与else之间的结构是什么关系 ? 5-14 输入三角形三边,编写程序判断三角形的种类:等腰三角形、等边三角形或一般三角形 。 解: #include main() int a,b,c ; printf(请输入三角形的三边值a,b,c:) ; scanf(%d,%d,%d,&a,&b,&c) ; if(a=b&b=c) printf(等边三角形n) ; else if(a!=b&a!=c&b!=c) printf(一般三角形n) ; else printf(等腰三角形n); 思考:如果输入的a,b,c三个值不能构成三角形,将如何处理?(在何处添加什么样的语句。) 5-15 编写程序,根据输入的字符输出相应的字串 : 输入字符 输出字串 a或A American b或B Britain c或C China d或D Denmark 其它 Other 解: #include main() char c ; printf(请输入字符:) ; scanf(%c,&c) ; switch(c) case a: case A:printf(Americann) ;break ; case b: case B:printf(Britain n) ;break ; case c: case C:printf(China n) ;break ; case d: case D:printf(Denmark n) ;break ; default : printf(Othern) ; 思考 :此题为何不用if语句的结构形式?if语句与switch语句的区别是什么? 5-16 编写程序,将输入的数字(0-6)转换成对应的星期英文名称输出 。 解 : #include main() char c ; printf(请输入数字(0-6):) ; scanf(%c,c) ; switch(c) case 0 :printf(SUNn) ;break ; case 1 :printf(MONn) ;break ; case 2 :printf(TUEn) ;break ; case 3 :printf(WEDn) ;break ; case 4 :printf(THUn) ;break ; case 5 :printf(FRIn) ;break ; case 6 :printf(SATn) ;break ; default :printf(输入错误n) ; 思考 : 此程序中若将“char c ;”改为“int c ;”是否可行 ?switch的语句的主要特点是什么?5-17编写个人所得税计算程序。解 : 个人所得税的计算办法是以每月收入额减除800元基本费用后,根据下表采用5%45%的九级超额累计税率 。 级数 全月应纳税所的额 税率/% 1 不超过800元的 5 2 超过800元至2000元的部分 10 3 超过2000元至5000元的部分 15 4 超过5000元至20000元的部分 20 5 超过20000元至40000元的部分 25 6 超过40000元至60000元的部分 30 7 超过60000元至80000元的部分 35 8 超过80000元至100000元的部分 40 9 超过100000元的部分 45 程序如下 : #include main() float shouru ,nashui ; printf(请输入你的收入:) ; scanf(%f,&shouru) ;/*计算纳税额*/ shouru-=800 ; if(shouru=0) nashui = 0 ; else if(shouru=800) nashui=0.05*shouru ; else if(shouru=2000) nashui=25+(shouru-800)*0.1 ; else if(shouru=5000) nashui=175+(shouru-2000)*0.15 ; else if(shouru=20000) nashui=625+(shouru-5000)*0.2; else if(shouru=40000) nashui=3625+(shouru-20000)*0.2; else if(shouru=60000) nashui=8625+(shouru-40000)*0.3; else if(shouru=80000) nashui=14625+(shouru-60000)*0.35 ; else if(shouru=100000) nashui=21625+(shouru-80000)*0.4; else nashui=29625+(shouru-100000)*0.45; printf(您应交纳个人所得税为:%8.2fn,nashui) ; printf(“纳税光荣!n”); 5-18 某公司的利润提成方案是:1万元及1万元以下利润提成5%,2万元及2万元以下利润提成6%,4万元及4万元以下利润提成7%,5万元及5万元以下利润提成8%,5万元以上利润提成9%。总提成采用分段累计计算。张三完成利润10万元,李四完成利润8万元,王五完成利润12万元。编写程序,计算张三、王五、李四可获得的利润提成。解:分析可得出如下的函数关系式:x5% x1万元500+(x-1) 6% 1万元x2万元y= 1100+(x-2) 7% 2万元x4万元2500+(x-4) 8% 4万元x5万元3300+(x-5) 9% x5万元 #includemain()float tc,z3,l4,w5;printf(请输入张三、李四、王五各自完成的利润额:);scanf(%f,%f,%f,&z3,&l4,&w5);/*计算张三的提成*/if(z3=1.0) tc=z3*0.05;else if (z3=2.0) tc=500+(z3-1)*0.06;else if(z3=4.0) tc=1100+(z3-2)*0.07;else if(z3=5.0) tc=2500+(z3-4)*0.08;else tc=3300+(z3-5)*0.09;printf(张三的提成为%8.2fn,tc);/*计算李四的提成*/if(l4=1.0) tc=l4*0.05;else if (l4=2.0) tc=500+(l4-1)*0.06;else if (l4=4.0) tc=1100+(l4-2)*0.07;else if (l4=5.0) tc=2500+(l4-4)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水体污染修复与水质提升技术方案
- 燃煤发电设备运行优化方案
- 防水工程环境影响评估方案
- 深远海养殖生态环境保护与修复方案
- 城市地下综合管网建设项目技术方案
- 甲乙丙三方能源产业股权转让及新能源开发协议
- 北京印刷学院印刷产业人才培训与引进合作协议
- 宅基地空地租赁与乡村振兴战略合作合同书
- 沙漠治理项目用地租赁与生态修复合作协议
- 离婚纠纷中夫妻共同财产分割及债务处理合同
- 国家电网工作人员综合素质考试题库含答案
- 2025年秋季开学全体教职工大会校长讲话:35分钟会议把所有老师骂醒了
- 3.4 活动:电路创新设计展示说课稿 2025-2026学年教科版物理九年级上册
- 2025年彩色水泥行业研究报告及未来行业发展趋势预测
- 2025高级工程师聘用合同
- 煤矿井下喷浆安全培训课件
- 输变电工程建设现行主要质量管理制度、施工与验收质量标准目录-2026年2月版-
- 2025年餐饮服务及学校食堂从业人员食品安全知识培训考试试卷(含答案)
- 1.3 植物与阳光(教学课件)科学青岛版二年级上册(新教材)
- 3.2《参与民主生活 》- 课件 2025-2026学年度道德与法治九年级上册 统编版
- 诺如知识培训方案课件
评论
0/150
提交评论