




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言第4章选择结构程序设计习题答案c语言第4章选择结构程序设计习题答案c语言第4章选择结构程序设计习题答案资料仅供参考文件编号:2022年4月c语言第4章选择结构程序设计习题答案版本号:A修改号:1页次:1.0审核:批准:发布日期:第4章选择结构程序设计习题(P111)C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假”答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。写出下面各逻辑表达式的值。设a=3,b=4,c=5。(1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!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)1有3个整数a、b、c,由键盘输入,输出其中最大的数。分析:这是一个规模较小的求最值的算法,习题用函数的方法实现。该题不用函数调用实现,但方法类似。法一:先求前两个数的最值,再用前两个数的最值和第三个数比较即得结果。法二:先假设第一个数是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。参考程序如下:法一:main(){ inta,b,c,max;/*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninputthevalueofa,b,c:");/*提示输入*/ scanf("%d%d%d",&a,&b,&c);/*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b)max=a; elsemax=b; if(max<c)max=c; printf("\nmax=%d\n",max);}法二:main(){ inta,b,c,max; printf("\ninputthevalueofa,b,c:"); scanf("%d%d%d",&a,&b,&c); max=a; if(max<b)max=b; if(max<c)max=c; printf("\nmax=%d\n",max);}有一个函数:写一段程序,输入x,输出y的值。分析:这是一个典型的分断函数的求解应用。运行时从键盘输入x的值,再判断其范围根据表达式计算y值并输出即可。该题的关键是如何判断x值的范围,需要用到嵌套的分支选择语句。具体方法比较多,可以先确定任意一个范围,在确定其余范围时可以用到前一条件不满足的隐含条件。注意嵌套语句中else和if的配对关系。另外仍然要注意C语言表达式和数学表达式的区别,乘号(*)在C语言表达式中一定不能省略。参考程序如下:#include<>main(){ floatx,y; printf("inputx:"); scanf("%f",&x); if(x<1) y=x; elseif(x<10)/*使用了隐含条件x>=1*/ y=2*x-1; else/*前两个条件都不满足,则隐含条件为x>=10*/ y=3*x-11; printf("y=%f\n",y);}对上述参考答案中加粗部分语句的改写方法:if(x<10)if(x<1)y=x;elsey=2*x-1;if(x<10)if(x<1)y=x;elsey=2*x-1;elsey=3*x-11;if(x>=10)y=3*x-11;elseif(x<1)y=x;elsey=2*x-1;if(x>=1&&x<=10)y=2*x-1;elseif(x>10)y=3*x-11;elsey=x;思考:还有其他的改写方法吗请动手写一写。给出一百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'。90以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。分析:该题是一个多分支选择的应用。C语言中实现多分支选择的方法可以用if~else嵌套语句或用switch语句,该题这两种方法都可以实现。在用if~else实现的时候注意else和if的配对,方法同上题;用switch语句实现的时候注意成绩处理为可以列举的值,方法是将成绩取整后整除10,这样百分制的成绩只有11种可能了。参考程序如下:法一(if~else语句实现):main(){floatscore;/*存放输入的百分制成绩*/chargrade;/*存放等级*/printf("\nPleaseinputthescore:");/*提示输入*/scanf("%f",&score);/*完成输入*/while(score>100||score<0)/*对输入的成绩进行合法性检查*/{printf("Scoreinputerror!\nPleaseinputthescore:");/*若不合法则提示重新输入*/scanf("%f",&score);/*重新输入*/}printf("\n");/*以下对成绩进行判断,计算出对应的等级*/if(score>=90)grade='A';elseif(score>=80)grade='B';elseif(score>=70)grade='C';elseif(score>=60)grade='D';elsegrade='E';printf("Score=%gGradeis%c\n",score,grade);/*输出结果*/}法二(switch语句实现):main(){floatscore;chargrade;printf("\nPleaseinputthescore:");scanf("%f",&score);while(score>100||score<0){printf("Scoreinputerror!\nPleaseinputthescore:");scanf("%f",&score);}printf("\n");switch((int)score/10)/*先将成绩取整,再整除10,得商的整数部分*//*以下case后为switch后表达式计算出来可能的值*/{case10:case9:grade='A';break;/*两个case值共用一组执行语句*/case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;default:grade='E';}printf("Score=%gGradeis%c\n",score,grade);}给一个不多于5位的正整数,要求:求出它是几位数;分别输出每一位数字;按逆序输出各位数字。分析:该题的关键是将一个整数分解为各位数字,可以用整除和取余相结合的方法实现,并分别用不同的变量保存起来。由于整数的位数在1~5位之间不确定,所以适合用switch开关语句实现。参考程序如下:main(){longintnum;/*num存放输入的原始数据,由于最大的5位数是99999,它超出了int型的范围(-32768~+32767)所以定义为long型*/intw,a,b,c,d,e;/*变量w用于存放数的位数,其余存放5位数的各位数字*/printf("Pleaseinputanumber(0~99999):");/*提示输入*/scanf("%ld",&num);/*输入长整型数据*/while(num<0||num>99999)/*检查输入数据的合法性*/{printf("\nInputError!Pleasere-enter:");scanf("%ld",&num);}/*一组if~else的嵌套确定输入的num是几位数*/if(num<10)w=1;elseif(num<100)w=2;elseif(num<1000)w=3;elseif(num<10000)w=4;elsew=5;/*根据位数分解num的各位数字*/switch(w){case5:e=num/10000;/*万位存于变量e中*/case4:d=num/1000%10;/*千位存于变量d中*/case3:c=num/100%10;/*百位存于变量c中*/case2:d=num/10%10;/*十位存于变量b中*/case1:a=num%10;/*个位存于变量a中*/}/*顺序、逆序输出分解后的各位数字*/switch(w){case5:printf("Shunxu:%d%d%d%d%d\n",e,d,c,b,a);printf("Nixu:%d%d%d%d%d\n",a,b,c,d,e);break;case4:printf("Shunxu:%d%d%d%d\n",a,b,c,d);printf("Nixu:%d%d%d%d\n",d,c,b,a);break;case3:printf("Shunxu:%d%d%d\n",a,b,c);printf("Nixu:%d%d%d\n",c,b,a);break;case2:printf("Shunxu:%d%d\n",a,b);printf("Nixu:%d%d\n",b,a);break;case1:printf("Shunxu:%d%d\n",a,b);printf("Nixu:%d%d\n",b,a);break;}}输入4个整数,要求按照由小到大的顺序输出。分析:小规模数据的简单排序可参考P88例,先将第一个变量和其后各变量逐一比较,逆序交换,最终将最值存于第一个变量中;然后将第二个变量和其后各变量再逐一比较,逆序交换,将第二个最值存于第二个变量中;以此类推,直到最的两个变量比较,逆序交换。最后按顺序输出各变量的值即为有序。参考程序如下:main(){ inta,b,c,d,t; printf("\n请输入4个整数:"); sc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CECS 10004-2018内置隔膜密闭式膨胀水箱
- T/CCS 007-2023煤矿融合通信系统技术要求
- T/CCIA 0017-2023轻纹砖
- T/CAQI 40-2018直饮水水站安全技术要求
- T/CAQI 242-2021房车冰箱技术要求及试验方法
- T/CAOE 42-2021海洋底质调查技术规程
- 测试策略面试题及答案
- 福州旅游面试题及答案
- 底层员工面试题及答案
- 衡阳函授考试题及答案
- 浙教版八年级科学第四章电学测试
- 机电顾问服务建议书123
- 广西壮族自治区工程造价综合定额答疑汇编2022年11月更新
- 科学发展观基本解读(完整版)课件
- 基坑工程施工验收记录表
- 夜间施工专项方案
- 微生物实验室病原微生物评估报告
- 护理风险管理与护理安全
- 综采工作面液压支架压死救活技术研究
- 行政单位会计实习报告(共36页)
- 主体结构监理实施细则范本
评论
0/150
提交评论