第5章选择构温序设计 5.】什么是算术运算?什么是关系运算?什么是逻辑运算? 解:略 5.2C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和假 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为"假”,则以 表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如38 的值为“真”,系统给出388.5的值为1 5.3写出下面各逻辑表达式的值。设a=3,b-4,c-5。 (1)a+b>c8.8.b= (2)a||b+c&&.b-c (3)!(a>b)8.8.!c'|1 (4)!(x=a)8.8(y=b)88.0 (5)!(a+b)+c-188b+c/2 解 (1)( (3)1 5.4有3个整数a、b、c,由键盘输人,输出其中最大的数 解:方法…:NS图见图5.1。 输人3个整数a、b、c 输出最大值输出最大值输出最大值,输出最大值 程序如下: main() pin(“请输人3个整数!")
scanf("%d为d,%d”,&a,8b,8c); if (bsc) eise printf("max=%d\n",a) 运行结果 请输入3个整数;12,34,9 max=34 方法二:使用条件表达式,可以使程序更加简明、清晰。 C, terp, max i printf(”请输入3个整数:"); scant("%d, ?d,%d,&a, &b, 8-c); emp=(a>b)? a: b4 *将a和b中的大者存入temp中 max=(temp>c)?temp;c;/将a和b中的大者与c比较,取最大者 printf(3个整数的最大数是%dn",max); 运行结 请输入3个整数:2,34,9∠ 3个整数的最大数是34 5.5有一函数: x<1) (1≤x<10) x-11(x≥10) 写一程序,输人x值,输出y值 解 printf("输入x:" n",x,y);
etse if (x<1o) *1≤x<10 else y=3 运行结果 ①输人 ②输人X:-Ik 5.6给一百分制成绩,要求输出成绩等级'A'、B′、C'、D′、E′。90分以上为A,80~89 分为B,70~79分为'C',60~69分为'D',60分以下为E'。 解:NS图见图5.2 置开关变量 logic初值 读人学生成绩sore 提示输入数据有误 ogic=o 根据core确定分数段temp g 输出 grade LBT grac printf(”请输入学生成绩:"); scanf(%f, &score)F while (score>>100:score<o) { printf("n输人有误,请重输."); scanf(%f,&score)
switch((int)(score/10)) f case 10: ase 9: grade=A, break case 8: grade=Bi break; ase 7: grade=C i break, case 6: grade=D,break, case o: grade= E prin("成绩是%5.1f,相应的等级是%c。\n”, score, grade 运行结果: ①请输入学生成绩:90.5 成绩是90.5,相应的等级是A。 ②请输入学生成绩:5 成绩是59.0,相应的等级是E。 说明:对输入的数据进行检查,如小于0或大于100,要求重新输入。(int) (sore/10)的作用是将( score/10)的值进行强制类型转换,得到一个整型值。 5.7给定一个不多于5位的正整数,要求:①求它是几位数;②分别打印出每一位数 字;③按逆序打印出各位数字。例如原数为321,应输出12 main o) long int num; int indiv,ten,hundred,thousand,ten-thousand,place: 分别代表个位、十位、百位、千位、万位和位数* printf("请输入一个整数(0~99999); scant( %1d",&num) if (num>9999) else if (num>999) else if (num 99) else if (num>>9)
printf("place=%d\n, place)+ printf(“每位数字为:") ten-thousand=num/10000: thousand=(int)(num -ten- thousand*10000)/1000; hundred=(int)(num--ten. thousand+ 10000-thousand 1000)/100: ten=(int)(num"ten thousand+10000-thousand 1000-hundred w 100)/ 10: div=(int)(num -ten- thousand* 10000-thousand* 1000- hundred *100-ten* 10): witch( place) Icase 5: printf("%d, %d %d, %d, %d, ten-thousand, thousand hundred, ten indiv) printf("\n反序数字为:); printi(%d%d%d%d%d\n, indiv, ten, hundred, thousand, ten-thousand case 4: printf("%d, %d, %d, yd, thousand, hundred, ten, indiv); rntf("n反序数字为:") printf("%d%dd%d\n,,indiv. ten, hundred, thousand); case 3: printf("%d, %d, %d, hundred, ten, indiv); printf("n反序数字为:) printf("%d%d%d\n, indiv.ten, hundred); case 2: printf( ]d, d, ten indiv); print("\n反序数字为:") printf("%d,d\n.indiv, ten); tf("%d printf("\n反序数字为:") 行结果 请输入一个整数(0~999):987654 位数:5 位数字为:9,8,7,6,5 反序数字为:56789 58企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提10%:利 润高于10万元,低于20万元(10000<1≤200000时,其中10万元按10%提成.高 于10万元的部分,可提成7.5%;200000-1≤4000时,其中20万元仍按上述办 法提成(下同),高于20万元的部分按5%提成;400000<≤600000时,高于40万 元的部分按3%提成;6000<I≤100000时,高于60万的部分按1.5%提成: Ⅰ>100000时,超过100万的部分按1%提成。从键盘输入当月利润Ⅰ求应发放