欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    c语言第4章选择结构程序设计习题答案Word版.doc

    • 资源ID:9032365       资源大小:30KB        全文页数:5页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言第4章选择结构程序设计习题答案Word版.doc

    传播优秀Word版文档 ,希望对您有帮助,可双击去除!第4章 选择结构程序设计习题(P111)4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。4.3 写出下面各逻辑表达式的值。设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)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(a>b) max=a;else max=b;if(max<c) 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(max<b) max=b;if(max<c) max=c;printf("nmax=%dn",max);4.6有一个函数:写一段程序,输入x,输出y的值。分析:这是一个典型的分断函数的求解应用。运行时从键盘输入x的值,再判断其范围根据表达式计算y值并输出即可。该题的关键是如何判断x值的范围,需要用到嵌套的分支选择语句。具体方法比较多,可以先确定任意一个范围,在确定其余范围时可以用到前一条件不满足的隐含条件。注意嵌套语句中else和if 的配对关系。另外仍然要注意C语言表达式和数学表达式的区别,乘号(*)在C语言表达式中一定不能省略。参考程序如下:#include<stdio.h>main()float x,y;printf("input x:");scanf("%f",&x);if(x<1)y=x;else if(x<10) /* 使用了隐含条件x >=1 */ y=2*x-1; else /* 前两个条件都不满足,则隐含条件为 x>=10 */ y=3*x-11;printf("y=%fn",y);对上述参考答案中加粗部分语句的改写方法:if(x<10) if(x<1) y=x; else y=2*x-1;else y=3*x-11;if(x>=10) y=3*x-11;else if (x<1) y=x; else y=2*x-1;if(x>=1 && x<=10) y=2*x-1;else if(x>10) 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(score>100 | score < 0) /*对输入的成绩进行合法性检查*/ printf("Score input error!nPlease input the score:"); /*若不合法则提示重新输入*/ scanf("%f",&score); /*重新输入*/ printf("n");/*以下对成绩进行判断,计算出对应的等级*/ if(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(score>100 | 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( num<0 | num>99999 ) /* 检查输入数据的合法性 */ printf("nInput Error! Please re-enter:"); scanf("%ld",&num); /* 一组ifelse的嵌套确定输入的num是几位数 */if(num<10) w=1; else if(num<100) w=2; else if(num<1000) w=3; else if(num<10000) w=4; else w=5; /* 根据位数分解num的各位数字*/switch( w ) case 5: e=num/10000; /* 万位存于变量e中*/ case 4: d=num/1000%10; /* 千位存于变量d中*/ case 3: c=num/100%10; /* 百位存于变量c中*/ case 2: d=num/10%10; /* 十位存于变量b中*/ case 1: a=num%10; /* 个位存于变量a中*/ /* 顺序、逆序输出分解后的各位数字 */switch(w) case 5: printf("Shunxu:%d%d%d%d%dn", e,d,c,b,a); printf("Nixu:%d%d%d%d%dn", a,b,c,d,e); break; case 4: printf("Shunxu:%d%d%d%dn",a,b,c,d); printf("Nixu:%d%d%d%dn",d,c,b,a); break; case 3: printf("Shunxu:%d%d%dn",a,b,c); printf("Nixu:%d%d%dn",c,b,a); break; case 2: printf("Shunxu:%d%dn",a,b); printf("Nixu:%d%dn",b,a); break;case 1: printf("Shunxu:%d%dn",a,b); printf("Nixu:%d%dn",b,a); break; 4.11 输入4个整数,要求按照由小到大的顺序输出。 分析:小规模数据的简单排序可参考P88例4.3,先将第一个变量和其后各变量逐一比较,逆序交换,最终将最值存于第一个变量中;然后将第二个变量和其后各变量再逐一比较,逆序交换,将第二个最值存于第二个变量中;以此类推,直到最的两个变量比较,逆序交换。最后按顺序输出各变量的值即为有序。参考程序如下:main()int a,b,c,d,t;printf("n请输入4个整数:");scanf("%d%d%d%d",&a,&b,&c,&d);if(a>b) t=a; a=b; b=t; if(a>c) t=a;a=c;c=t; if(a>d)t=a;a=d;d=t; if(b>c)t=b;b=c;c=t; if(b>d)t=b;b=d;d=t;if(c>d)t=c;c=d;d=t;printf("排序的结果是:%d,%d,%d,%dn",a,b,c,d);补充题:输入三个整数a,b,c,判断其是否能构成三角形?是何种三角形(等腰/等边/普通)?

    注意事项

    本文(c语言第4章选择结构程序设计习题答案Word版.doc)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开