2,5 1,5
3.
#include
int a, b; a=8; b=7;
a=(a-- ==b++)? a%3 : a/3; printf(\}
解:a=2 b=8 六、程序填空题。
1.以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。例如输入1 2 3,输出a=2 b=3 c=1。 #include
{ int a,b,c, ① ;
printf(“Enter a,b,c:”); scanf(“%d%d%d”, ② ); ③ ; a=b; b=c; ④ ;
printf(“a=%d b=%d c=%d\\n”,a,b,c); }
解:① t ② &a,&b,&c ③ t=a ④ c=t
2.以下程序不借助任何变量把a、b中的值进行交换。 #include
printf(“Input a,b:”); scanf(“%d%d”, ① );
a+= ② ; b=a- ③ ; a- = ④ ; printf(“a=%d b=%d\\n”,a,b); }
解:① &a,&b ② b ③ b ④ b 七、编程题。
1.输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。 解:#include
{ char c1,c2,c3,t,min,mid,max;
c1=getchar(); c2=getchar(); c3=getchar(); min=(t=c1 8 max=(t=c1>c2?c1:c2)>c3?t:c3; mid=c1+c2+c3-min-max; putchar(min); putchar(mid); putchar(max); } 2.输入两点坐标(x1,y1)、(x2,y2),计算并输出两点间的距离。 解:#include #include double x1,y1,x2,y2,d; printf(“请输入两点坐标 (x1,y1),(x2,y2)\\n”); scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2); d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf(“两点间距离=%f\\n”,d); } 3.编写程序,计算球体积并输出它的值。要求输入半径值,计算结果保留三位小数。 解:#include printf(“请输入半径值:\\n”); scanf(“%lf”,&r); gv=4.0/3*PI*pow(r,3); printf(“半径为%f的球的体积为:%.3f\\n”,r,gv); } 4.输入三角形的底和高,求三角形面积。 解:#include double a,h,s; printf(“请输入三角形的底,高\\n”); scanf(“%lf,%lf”,&a,&h); s=a*h/2; printf(“三角形面积=%f\\n”,s); } 5.编写程序,输入一个实数后输出该数的绝对值。 解:#include double x,y; 9 printf(“请输入一个实数\\n”); scanf(“%lf”,&x); y=x>=0?x:-x; printf(“|%g|=%g\\n”,x,y); } 6.输入梯形的上底、下底和高,求梯形面积。 解:#include double a,b,h,s; printf(“请输入梯形的上底,下底,高\\n”); scanf(“%lf,%lf,%lf”,&a,&b,&h); s=(a+b)*h/2; printf(“ 梯形面积=%f\\n”,s); } 7. 输入矩形的边长,求矩形面积。 解:#include double a,b,s; printf(“请输入矩形的长,宽\\n”); scanf(“%lf,%lf”,&a,&b); s=a*b; printf(“ 矩形面积=%f\\n”,s); } 8. 已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。 解:#include int a,d,n,sum; printf(“请输入等差数列的首项 公差 项数\\n”); scanf(“%d%d%d”,&a,&d,&n); sum=a*n+n*(n-1)*d/2; printf(“ sum=%d\\n”,sum); } 9. 编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。 解:#include int d,h,m,t; printf(“请输入天 小时 分钟\\n”); scanf(“%d%d%d”,&d,&h,&m); t=d*24*60+h*60+m; printf(“%d天%d小时%d分钟=%d分钟\\n”,d,h,m,t); } 10 10. 编写程序,求出给定半径r的圆以及内接正n边形的面积,输出计算结果。r和n的值由键盘输入。 解:#include double r,s1,s2; int n; printf(“Input r n\\n”); scanf(“%lf%d”,&r,&n); s1=PI*r*r; s2=n/2.0*r*r*sin(2*PI/n); printf(“圆面积=%f,正内接%d边形面积=%f\\n”,s1,s2); } 习 题 4 一、单项选择题 1.下列语句将小写字母转换为大写字母,其中正确的是( )。 A.if(ch>='a'&ch<='z')ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32; C.ch=(ch>='a'&&ch<='z')?ch-32:' '; D.ch=(ch>'a'&&ch<'z')?ch-32:ch; 2.下列各语句中,能够将变量u、s中最大值赋给变量t的是( )。 A.if(u>s)t=u;t=s; B.t=s;if(u>s)t=u; C.if(u>s)t=s;else t=u D.t=u;if(u>s)t=s; 3.假设变量x、k都已定义,下列语句片段中,无语法错误的是( )。 A. switch(x){ case x>=90: putchar('A'); case x<60: putchar('E'); } B. switch(x) { case 1+2: k='A'; defualt: k='E'; case 2*4: k='B'; } C. switch(x){ case 2+x: k=x-2; case 3*x: k=x+3; default: k=0; } D. switch(x){ case 3.5: k=0.5*x; case 7.8: k=8*x; default: k=0; } *4.与语句while(!s )中的条件等价的是( )。 11