好文档 - 专业文书写作范文服务资料分享网站

c语言第章 选择结构程序设计习题答案

天下 分享 时间: 加入收藏 我要投稿 点赞

第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)1 4、4有3个整数a、b、c,由键盘输入,输出其中最大得数。

分析:这就是一个规模较小得求最值得算法,习题1、6用函数得方法实现。该题不用函数调用实现,但方法类似。法一:先求前两个数得最值,再用前两个数得最值与第三个数比较即得结果。法二:先假设第一个数就是最值,再依次与第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。

参考程序如下: 法一:

main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf(\ /*提示输入*/ scanf(\ /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

main() { int a,b,c,max; printf(\ scanf(\ max=a; if(max

4、6有一个函数:写一段程序,输入x,输出y得值。

分析:这就是一个典型得分断函数得求解应用。运行时从键盘输入x得值,再判断其范围根据表达式计算y值并输出即可。该题得关键就是如何判断x值得范围,需要用到嵌套得分支选择语句。具体方法比较多,可以先确定任意一个范围,在确定其余范围时可以用到前一条件不满足得隐含条件。注意嵌套语句中else与if 得配对关系。另外仍然要注意C语言表达式与数学表达式得区别,乘号(*)在C语言表达式中一定不能省略。

参考程序如下:

#include main()

{ float x,y;

printf(\ scanf(\ if(x<1) y=x;

else if(x<10) /* 使用了隐含条件x >=1 */ y=2*x-1;

else /* 前两个条件都不满足,则隐含条件为 x>=10 */ y=3*x-11; printf(\}

对上述参考答案中加粗部分语句得改写方法: if(x<10) if(x>=10) if(x>=1 && x<=10) 思考: 还有其她得改写方法吗?请动手写一写。 if(x<1) y=x; y=3*x-11; y=2*x-1; 4、8给出一,要求输出成绩等级'A'、'B'、'C'、'D'、'E'。90以上为'A',80~89'B',70~79分为'C',60~69 百分制成绩 else y=2*x-1; else if (x<1) y=x; else if(x>10) 分为y=3*x-11; 分为'D',60分以下为'E'。 else y=3*x-11; else y=2*x-1; else y=x; 分析:该题就是一个多分支选择得应用。C语言中实现多分支选择得方法可以用if~else嵌套语句或用switch语句,该题这两种方法都可以实现。在用if~else实现得时候注意else与if得配对,方法同上题;用switch语句实现得时候注意成绩处理为可以列举得值,方法就是将成绩取整后整除10,这样百分制得成绩只有11种可能了。

参考程序如下:

法一(if~else语句实现):

main()

{ float score; /*存放输入得百分制成绩*/ char grade; /*存放等级*/

printf(\/*提示输入*/ scanf(\ /* 完成输入*/

while(score>100 || score < 0) /*对输入得成绩进行合法性检查*/

{ printf(\/*若不合法则提示重新输入*/ scanf(\ /*重新输入*/ }

printf(\

/*以下对成绩进行判断,计算出对应得等级*/ 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(\%g Grade is %c\\n\/*输出结果*/ }

法二(switch语句实现):

main()

{ float score; char grade;

printf(\ scanf(\

while(score>100 || score < 0)

{ printf(\ scanf(\ }

printf(\

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(\ Grade is %c\\n\}

4、9 给一个不多于5位得正整数,要求:求出它就是几位数;分别输出每一位数字;按逆序输出各位数字。

分析:该题得关键就是将一个整数分解为各位数字,可以用整除与取余相结合得方法实现,并分别用不同得变量保存起来。由于整数得位数在1~5位之间不确定,所以适合用switch开关语句实现。

参考程序如下:

main()

{ long int num; /* num存放输入得原始数据,由于最大得5位数就是99999,它超出了int型得范围(-32768 ~ +32767)所以定义为long型 */

int w,a,b,c,d,e; /* 变量w用于存放数得位数,其余存放5位数得各位数字 */ printf(\ /*提示输入*/ scanf(\ /* 输入长整型数据 */

while( num<0 || num>99999 ) /* 检查输入数据得合法性 */ { printf(\ scanf(\ }

/* 一组if~else得嵌套确定输入得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; /* 千位存于变量d中*/ case 3: c=num/100; /* 百位存于变量c中*/ case 2: d=num/10; /* 十位存于变量b中*/ case 1: a=num; /* 个位存于变量a中*/ }

/* 顺序、逆序输出分解后得各位数字 */ switch(w)

{ case 5: printf(\ printf(\ break;

case 4: printf(\ printf(\ break;

case 3: printf(\ printf(\ break;

case 2: printf(\ printf(\ break;

case 1: printf(\ printf(\ break; } }

4、11 输入4个整数,要求按照由小到大得顺序输出。

分析:小规模数据得简单排序可参考P88例4、3,先将第一个变量与其后各变量逐一比较,逆序交换,最终将最值存于第一个变量中;然后将第二个变量与其后各变量再逐一比较,逆序交换,将第二个最值存于第二个变量中;以此类推,直到最得两个变量比较,逆序交换。最后按顺序输出各变量得值即为有序。 参考程序如下:

main()

{ int a,b,c,d,t;

printf(\请输入4个整数:\

scanf(\ 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,%d\\n\}

补充题:

输入三个整数a,b,c,判断其就是否能构成三角形?就是何种三角形(等腰/等边/普通)?

c语言第章 选择结构程序设计习题答案

第4章选择结构程序设计习题(P111)4、2C语言中如何表示“真”与“假”?系统如何判断一个量得“真”与“假”?答: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
推荐度:
点击下载文档文档为doc格式
3p7j1690hj3z01x0bvw21wxgu8k84a00ngs
领取福利

微信扫码领取福利

微信扫码分享