} t=a*r; b=a-t;
printf(\} 参考答案:【1】a/500 【2】r=0.08
4.116 某个自动加油站有'a','b','c'三种汽油,单价分别为1.50,1.35,1.18(元/千克),也提供了―自己加‖和―协助加‖两个服务等级。这样用户可以得到5%或10%的优惠。本程序针对用户输入加油量a,汽油品种b和服务类型c('f'--自动,'m'--自己,'e'--协助),输出应付款m。请分析程序填空。
main()
{float a,r1,r2,m; char b,c;
scanf(\swith(b)
{case 'a':r1=1.5;break; case 'b': 【1】 ;break; case 'c':r1=1.18;break; }
switch(c)
{case 'f':r2=0;break; case 'm':r2=0.05;break; case【2】:r2=0.1;break; }
m=【3】; printf(\}
参考答案:【1】r1=1.35【2】'e'【3】a*r1*(1-r2) 4.117 以下程序计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。请分析程序填空。
main()
{int yy,mm,len;
printf(\
scanf(\switch(mm)
{case 1: case 3: case 5: case 7:case 8: case 10:case 12:【1】;break;
case 4: case 6: case 9: case 11:len=30;break;
case 2:if(yy%4==0&&yy0!=0||yy@0==0)【2】; else【3】; break;
default:printf(\}
printf(\}
参考答案:【1】len=31【2】len=29【3】len=28
*4.118 以下程序用以计算y年m1月d1日与同年的m2月d2日之间的天数(m2>=m1),并打印计算结果。若m1=m2且d1=d2则算一天。请分析程序填空。
main()
{int y,m1,d1,m2,d2; int i,d;
scanf(\y=(y%4==0【1】y0!=0【2】y@0==0)?1:0; d=0-d1;
for(i=m1;i {case 1:case 3:case 5: case 7:case 8: case 10:case 12:d+=31;break; case 2:d=d+28+y; break; case 4:case 6:case 9:case 11:【3】; } printf(\} 参考答案:【1】&&【2】||【3】d=d+30 4.3 编程题 4.119 编制程序,要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。 参考程序: main() {int a,b; printf(\scanf(\ if (a*a+b*b>100) printf(\else printf(\} 4.120 试编程判断输入的正整数是否既是5又是7的整数倍,若是输出yes,否则输出no。 参考程序: main() {int a; printf(\scanf(\ if (a%5==0&&a%7==0) printf(\else printf(\} 4.121 请编程序,根据以下函数关系,对输入的每个x值,计算出相应的y值。 x y x≤0 0 0 参考程序: main() {float x,y; printf(\scanf(\y=-1; if(x<0) y=0; else if(x<=10) y=x; else if(x<=20) y=10; else if(x<40) y=0.5*x+20 else y=-1; if (y==-1) printf(\else printf(\} 4.122 输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一: (1)能同时被3,5,7整除 (2)能被其中两数整除(要指出哪两个)。 (3)能被其中一个数整除(要指出哪一个)。 (4)不能被任何一个整除。 参考程序: main() {int m; printf(\scanf(\ if(m%3==0&&m%5==0&&m%7==0) printf(\能同时被3,5,7整除\ else if((m%3==0&&m%5==0)||(m%3==0&&m%7==0)||(m%5==0&&m%7==0)) {printf(\能被其中两数整除\ if(m%3==0&&m%5==0) printf(\ else if(m%3==0&&m%7==0) printf(\ else printf(\ } else if(m%3==0||m%5==0||m%7==0) {printf(\能被其中一个数整除\ if(m%3==0) printf(\else if(m%5==0) printf(\ else printf(\ } else printf(\不能被任何一个整除\} 4.123 将以下程序段改用非嵌套的if语句实现。 int s,t,m; t=(int)(s/10); switch(t) {case 10:m=5;break; case 9:m=4;break; case 8:m=3;break; case 7:m=2;break; case 6:m=1;break; default: m=0; } 参考程序: m=0; if(s>=100&&s<110) m=5; if(s>=90&&s<100) m=4; if(s>=80&&s<90) m=3; if(s>=70&&s<80) m=2; if(s>=60&&s<70) m=1; 4.124 用switch编程实现: -1 (x<0) y={0 (x=0) 1 (x>0) 参考程序: void main() {float x; int y; printf(\ scanf(\ switch(x<0) {case 1:y=-1;break; case 0:switch(x==0) {case 1:y=0;break; case 0:y=1; } } printf(\} 4.125 将以下程序段改用嵌套的if语句实现。 int s,t,m; t=(int)(s/10); switch(t) {case:m=5;break; case 9:m=4;break; case 8:m=3;break; case 7:m=2;break; case 6:m=1;break; default: m=0; } 参考程序: if(s>=110&&s<60) m=0 else if(s<110) m=5; else if(s<100) m=4; else if(s<90) m=3; else if(s<80) m=2; else m=1; 4.126 请将以下语句改写成为switch语句。 if(s>0&&s<=10) if(s>=3&&s<=6) x=2; else if(s>1||s>8) x=3; else x=1; else x=0;