



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 选择结构程序设计习题(P111)4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+bc&b=c (2)a|b+c&b-c (3)!(ab)&!c|1 (4)!(x=a)&(y=b)&0 (5)!(a+b)+c-1&b+c/2解:该题在求解过程中注意:一、优先级。逻辑运算符(&和|)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低;二、逻辑表达式的求值规则。(P94)所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)14.4有3个整数a、b、c,由键盘输入,输出其中最大的数。分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法类似。法一:先求前两个数的最值,再用前两个数的最值和第三个数比较即得结果。法二:先假设第一个数是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。参考程序如下:法一:main()int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/printf(ninput the value of a,b,c:); /*提示输入*/scanf(%d%d%d,&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/if(ab) max=a;else max=b;if(maxc) max=c;printf(nmax=%dn,max);法二:main()int a,b,c,max; printf(ninput the value of a,b,c:); scanf(%d%d%d,&a,&b,&c); max=a;if(maxb) max=b;if(maxc) max=c;printf(nmax=%dn,max);4.6有一个函数:写一段程序,输入x,输出y的值。分析:这是一个典型的分断函数的求解应用。运行时从键盘输入x的值,再判断其范围根据表达式计算y值并输出即可。该题的关键是如何判断x值的范围,需要用到嵌套的分支选择语句。具体方法比较多,可以先确定任意一个范围,在确定其余范围时可以用到前一条件不满足的隐含条件。注意嵌套语句中else和if 的配对关系。另外仍然要注意C语言表达式和数学表达式的区别,乘号(*)在C语言表达式中一定不能省略。参考程序如下:#includemain()float x,y;printf(input x:);scanf(%f,&x);if(x1)y=x;else if(x=1 */ y=2*x-1; else /* 前两个条件都不满足,则隐含条件为 x=10 */ y=3*x-11;printf(y=%fn,y);对上述参考答案中加粗部分语句的改写方法:if(x10) if(x=10) y=3*x-11;else if (x=1 & x10) y=3*x-11; else y=x;思考:还有其他的改写方法吗?请动手写一写。4.8给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。分析:该题是一个多分支选择的应用。C语言中实现多分支选择的方法可以用ifelse嵌套语句或用switch语句,该题这两种方法都可以实现。在用ifelse实现的时候注意else和if的配对,方法同上题;用switch语句实现的时候注意成绩处理为可以列举的值,方法是将成绩取整后整除10,这样百分制的成绩只有11种可能了。参考程序如下:法一(ifelse语句实现):main() float score; /*存放输入的百分制成绩*/ char grade; /*存放等级*/ printf(nPlease input the score: ); /*提示输入*/ scanf(%f,&score); /* 完成输入*/ while(score100 | score =90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; printf(Score=%g Grade is %cn,score,grade); /*输出结果*/法二(switch语句实现):main() float score; char grade; printf(nPlease input the score: ); scanf(%f,&score); while(score100 | score 0) printf(Score input error!nPlease input the score:); scanf(%f,&score); printf(n); switch( (int)score/10 ) /*先将成绩取整,再整除10,得商的整数部分 */ /* 以下case后为switch后表达式计算出来可能的值 */ case 10: case 9: grade=A; break; /* 两个case值共用一组执行语句 */ case 8: grade=B; break; case 7: grade=C; break; case 6: grade=D; break; default: grade=E; printf(Score=%g Grade is %cn,score,grade);4.9 给一个不多于5位的正整数,要求:求出它是几位数;分别输出每一位数字;按逆序输出各位数字。分析:该题的关键是将一个整数分解为各位数字,可以用整除和取余相结合的方法实现,并分别用不同的变量保存起来。由于整数的位数在15位之间不确定,所以适合用switch开关语句实现。参考程序如下:main() long int num; /* num存放输入的原始数据,由于最大的5位数是99999,它超出了int型的范围(-32768 +32767)所以定义为long型 */ int w,a,b,c,d,e; /* 变量w用于存放数的位数,其余存放5位数的各位数字 */ printf(Please input a number(099999):); /*提示输入*/ scanf(%ld,&num); /* 输入长整型数据 */ while( num99999 ) /* 检查输入数据的合法性 */ printf(nInput Error! Please re-enter:); scanf(%ld,&num); /* 一组ifelse的嵌套确定输入的num是几位数 */if(num10) w=1; else if(num100) w=2; else if(num1000) w=3; else if(numb) t=a; a=b; b=t; if(ac) t=a;a=c;c=t;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家焊工技师证书职业技能考试练习题库(含答案)
- 2025年广西中烟工业有限责任公司招聘考试笔试试题(含答案)
- 2025年佛山市禅城区南庄镇堤田小学招聘教师考试笔试试题(含答案)
- 2025建筑工地材料储存库建设合同
- 2025年医疗机构手卫生规范考试试题及答案
- 北京消防知识培训课件
- 北京汽车知识培训课件
- 2025抗菌药物培训试题库及答案
- 2025年安全员安全生产知识竞赛抢答题库及答案
- 2024年全国“汽油加氢装置操作工”技能及理论知识考试题库与答案
- 临床技术操作规范与诊疗指南
- 私有云平台搭建项目实施方案
- DB43-T 3111-2024分布式光伏接入配电网技术导则改
- 《高速公路边坡光伏交通安全性评价方法》
- 电力生产典型事故案例汇编
- DB32-T 4174-2021 城市居住区和单位绿化标准
- 2024卫浴行业白皮书-巨量引擎-202412
- 山东省潍坊市2024-2025学年高一上学期期中考试数学试题
- 《山东省建筑工程消耗量定额》解释全集
- 宠物脂肪肝的诊断与治疗
- 便利店安全管理实施方案
评论
0/150
提交评论