C程序设计(第四版)谭浩强_课后习题答案第4章第4章选择结构程序设计854.1选择结构和条件判断854.2用if语句实现选择结构874.2.1用if语句处理选择结构举例874.2.2if语句的一般形式894.3关系运算符和关系表达式914.3.1关系运算符及其优先次序914.3.2关系表达式924.4逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套994.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例105习题1114-4-1#includestdio.hintmain(){inta,b,c;printf(请输入三个整数:);scanf(%d,%d,%d,&a,&b,&c);if(ab)if(bc)printf(max=%d\n,c);elseprintf(max=%d\n,b);elseif(ac)printf(max=%d\n,c);elseprintf(max=%d\n,a);return0;}4-4-2#includestdio.hintmain(){inta,b,c,temp,max;printf(请输入三个整数:);scanf(%d,%d,%d,&a,&b,&c);temp=(ab)?a:b;/*将a和b中的大者存入temp中*/max=(tempc)?temp:c;/*将a和b中的大者与c比较,取最大者*/printf(三个整数的最大数是%d\n,max);return0;}4-5-2#includestdio.h#includemath.h#defineM1000intmain(){inti,k;printf(请输入一个小于%d的整数i:,M);scanf(%d,&i);while(iM){printf(输入的数不符合要求,请重新输入一个小于%d的整数i:,M);scanf(%d,&i);}k=sqrt(i);printf(%d的平方根的整数部分是:%d\n,i,k);return0;}4-5#includestdio.h#includemath.h#defineM1000intmain(){inti,k;printf(请输入一个小于%d的整数i:,M);scanf(%d,&i);if(iM){printf(输入的数不符合要求,请重新输入一个小于%d的整数i:,M);scanf(%d,&i);}k=sqrt(i);printf(%d的平方根的整数部分是:%d\n,i,k);return0;}4-6.#includestdio.hintmain(){intx,y;printf(输入x:);scanf(%d,&x);if(x1)/*x1*/{y=x;printf(x=%3d,y=x=%d\n,x,y);}elseif(x10)/*1=x10*/{y=2*x-1;printf(x=%d,y=2*x-1=%d\n,x,y);}else/*x=10*/{y=3*x-11;printf(x=%d,y=3*x-11=%d\n,x,y);}return0;}4-7-1#includestdio.hintmain(){intx,y;printf(enterx:);scanf(%d,&x);y=-1;if(x!=0)if(x0)y=1;elsey=0;printf(x=%d,y=%d\n,x,y);return0;}4-7-2#includestdio.hintmain(){intx,y;printf(pleaseenterx:);scanf(%d,&x);y=0;if(x=0)if(x0)y=1;elsey=-1;printf(x=%d,y=%d\n,x,y);return0;}4-8#includestdio.hintmain(){floatscore;chargrade;printf(请输入学生成绩:);scanf(%f,&score);while(score100||score0){printf(\n输入有误,请重输);scanf(%f,&score);}switch((int)(score/10)){case10:case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;case5:case4:case3:case2:case1:case0:grade='E';}printf(成绩是%5.1f,相应的等级是%c\n,score,grade);return0;}4-9#includestdio.h#includemath.hintmain(){intnum,indiv,ten,hundred,thousand,ten_thousand,place;//分别代表个位,十位,百位,千位,万位和位数printf(请输入一个整数(0-99999):);scanf(%d,&num);if(num9999)place=5;elseif(num999)place=4;elseif(num99)place=3;elseif(num9)place=2;elseplace=1;printf(位数:%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*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);switch(place){case5:printf(%d,%d,%d,%d,%d,ten_thousand,thousand,hundred,ten,indiv);printf(\n反序数字为:);printf(%d%d%d%d%d\n,indiv,ten,hundred,thousand,ten_thousand);break;case4:printf(%d,%d,%d,%d,thousand,hundred,ten,indiv);printf(\n反序数字为:);printf(%d%d%d%d\n,indiv,ten,hundred,thousand);break;case3:printf(%d,%d,%d,hundred,ten,indiv);printf(\n反序数字为:);printf(%d%d%d\n,indiv,ten,hundred);break;case2:printf(%d,%d,ten,indiv);printf(\n反序数字为:);printf(%d%d\n,indiv,ten);break;case1:printf(%d,indiv);printf(\n反序数字为:);printf(%d\n,indiv);break;}return0;}4-10-1#includestdio.hintmain(){inti;doublebonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+100000*0.05;bon6=bon4+100000*0.03;bon10=bon6+400000*0.015;printf(请输入利润i:);scanf(%d,&i);if(i=100000)bonus=i*0.1;elseif(i=200000)bonus=bon1+(i-100000)*0.075;elseif(i=400000)bonus=bon2+(i-200000)*0.05;elseif(i=600000)bonus=bon4+(i-400000)*0.03;elseif(i=1000000)bonus=bon6+(i-600000)*0.015;elsebonus=bon10+(i-1000000)*0.01;printf(奖金是:%10.2f\n,bonus);return0;}4-10-2#includestdio.hintmain(){inti;doublebonus,bon1,bon2,bon4,bon6,bon10;intbranch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf(请输入利润i:);scanf(%d,&i);branch=i/100000;if(branch10)branch=10;switch(branch){case0:bonus=i*0.1;break;case1:bonus=bon1+(i-100000)*0.075;break;case2:case3:bonus=bon2+(i-200000)*0.05;break;case4:case5:bonus=bon4+(i-400000)*0.03;break;case6:case7:case8:case9:bonus=bon6+(i-600000)*0.015;break;case10:bonus=bon10+(i-1000000)*0.01;}printf(奖金是%10.2f\n,bonus);return0;}4-11#includestdio.hintmain(){intt,a,b,c,d;printf(请输入四个数:);scanf(%d,%d,%d,%d,&a,&b,&c,&d);printf(a=%d,b=%d,c=%d,d=%d\n,a,b,c,d);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(ad){t=a;a=d;d=t;}if(bc){t=b;b=c;c=t;}if(bd){t=b;b=d;d=t;}if(cd){t=c;c=d;d=t;}printf(排序结果如下:\n);printf(%d%d%d%d\n,a,b,c,d);return0;}4-12#includestdio.hintmain(){inth=10;floatx1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;printf(请输入一个点(x,y):);scanf(%f,%f,&x,&y);d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);/*求该点到各中心点距离*/d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);if(d11&&d21&&d31&&d41)h=0;/*判断该点是否在塔外*/printf(该点高度为%d\n,h);return0;}