"SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));} else printf("Data error!");} 执行结果: 456 SS=9.9215674165 6.源程序: main() {int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56; printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}
7.源程序: main() {int a,b,c,m; scanf("%d %d %d",&;a,&;b,&;c); m=a;a=b;b=c;c=m; printf("%d %d %d\n",a,b,c);} 执行结果: 567 675 8.源
程序: main() {int a,b,c; scanf("%d %d %d",&;a,&;b,&;c); printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.); 执行结果: 679 average of 6,7 and 9 is 7.33 9.不能。修改后的源程序如下: main() {int a,b,c,x,y; scanf("%d %d %d",&;a,&;b,&;c); x=a*b;y=x*c; printf("a=%d,b=%d,c=%d\n",a,b,c); printf("x=%d,y=%d\n",x,y);}
6 第 5 章 选择结构程序设计 一、单项选择题(第 113 页) 1-4.DCBB 5-8.DABD
二、填空题(第 115 页) 1.非 0 0 2.k==0 3.if (abs(x)>4) printf("%d",x);else printf("error!"); 4.if((x>=1&;&;x<=10||x>=200&;&;x<=210)&;&;x&;1)printf("%d",x); 5.k=1 (原题最后一行漏了个 d,如果认为原题正确,则输出 k=%。) 6. 8! Right!11 7.$$$a=0 8.a=2,b=1 三、编程题(第 116 页) 1.有错。正确的程序如下: main() {int a,b,c; scanf("%d,%d,%d",&;a,&;b,&;c); printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序: main() {unsigned long a; scanf("%ld",&;a); for(;a;printf("%d",a%10),a/=10);} 执行结果: 12345 54321 3.(1)源程序: main() {int x,y; scanf("%d",&;x); if (x>-5&;&;x<0)y=x; if (x>=0&;&;x<5)y=x-1; if (x>=5&;&;x<10)y=x+1; printf("%d\n",y);} (2)源程序: main() {int x,y; scanf("%d",&;x); if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1; else y=x-1; else y=x; printf("%d\n",y);} (3)源程序: main() {int x,y; scanf("%d",&;x); if(x<10) if(x>=5)y=x+1; else if(x>=0)y=x-1; else if(x>-5)y=x; printf("%d\n",y);} (4)源程序: main() {int x,y; scanf("%d",&;x); switch(x/5) {case -1:if(x!=-5)y=x;break; case 0:y=x-1;break; case 1:y=x+1;} printf("%d\n",y);} 4.本题为了避免考虑每月的天数及闰年等
问题,故采用面向对象的程序设计。 现给出 Delphi 源程序和 C++ Builder 源程序。
Delphi 源程序: procedure TForm1.Button
1Click(Sender: TObject);
begin edit3.Text:=format('%.0f 天',[strtodate(edit2.text) -strtodate(edit1.text)]); end; procedure TForm1.FormCreate(Sender: TObject); begin Edit2.Text:=datetostr(now); button1click(form1) end; C++ Builder 源程序: void __fastcall TForm1::Button1Click(TObject *Sender) { Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天"; } void __fastcall TForm1::FormCreate(TObject *Sender) { Edit2->Text=DateToStr(Now()); Button1Click(Form1); } 执行结果:(运行于 Windows 下) img378.photo.163/nxgt/41463572/1219713927.jpg 5.源程序: main() {unsigned a,b,c; printf("请输入三个整数:"); scanf("%d %d %d",&;a,&;b,&;c); if(a&;&;b&;&;c&;&;a==b&;&;a==c)printf("构成等边三角形\n"); else if(a+b>c&;&;a+c>b&;&;b+c>a) if(a==b||a==c||b==c)printf("构成等腰三角形\n"); else printf("构成一般三角形\n"); else printf("不能构成三角形\n");} 执行结果: 请输入三个整数:5 6 5 构成等腰三角形 6.源程序: main() {int x,y; scanf("%d",&;x); if(x<20)y=1; else switch(x/60) {case 0:y=x/10;break; default:y=6;} printf("x=%d,y=%d\n",x,y);} 7.源程序:
main() {unsigned m;float n; scanf("%d",&;m); if(m<100)n=0; else if(m>600)n=0.06; else n=(m/100+0.5)/100; printf("%d %.2f %.2f\n",m,m*(1-n),m*n);} 执行结果: 450 450 429.75 20.25 8. 2171 天(起始日期和终止日期均算在内) 本题可利用第 4 小题编好的程序进行计算。 把起