C语言程序设计(第二版)习题参考答案1 下载本文

内容发布更新时间 : 2024/12/23 17:26:25星期一 下面是文章的全部内容请认真阅读。

if( &&a!=b)

printf(\ } }

解:a%i==0 c=1; c==a

6.计算2+22+222+2222+?+22+?+2的和。

n #include n

void main()

{ int s=1,t=1,a,n; scanf(\

for(int i=2;i<=n;i++) { t=t*10+1; }

printf(\}

解:a=2; s+=t; s*=a;

四、编程题

1.输入一个实数,输出它的平方根值,如果输入数小于0,则输出“The number is error!”的提示。

解:#include

#include void main() {

double a,x;

printf(“Input data:\\n”); scanf(“%lf”,&a); if(a>=0){

x=sqrt(a);

printf(“%g的平方根值为%g\\n”,a,x); }

else

printf(“The number is error!\\n”); }

2.用if语句编程序,输入x后按下式计算y值,并输出结果。

2

x+2*x +10 0≤x≤8

y= x-3*x3-9 x<0 或 x>8 解:#include

void main() {

double x,y;

15

printf(“Input x:\\n”); scanf(“%lf”,&x); if(x>=0&&x<=8) y=x+2*x*x+10; else

y=x-3*x*x*x-10;

printf(“x=%f,y=%f\\n”,x,y); }

3.输入一个百分制的成绩t后,按下式输出它的等级,要求分别写成if结构和switch结构。等级为:90~100为“A”,80~89为“B”,70~79为“C”,60~69为“D”,59~0为“E”。

if结构

解:#include

void main() {

double t;

printf(“Input score:\\n”); scanf(“%lf”,&t); if(t>=90&&t<=100) putchar(?A?);

else if(t>=80&&t<90) putchar(?B?);

else if(t>=70&&t<80) putchar(?C?);

else if(t>=60&&t<70) putchar(?D?); else if(t>=0&&t<60) putchar(?E?);

else

printf(“error!\\n”);

}

switch结构

解:#include

void main() {

double t;

printf(“Input score:\\n”); scanf(“%lf”,&t);

switch((int)(t/10)){ case 10:

case 9:putchar(?A?);break; case 8:putchar(?B?);break;

case 7:putchar(?C?);break; case 6:putchar(?D?);break; case 5: case 4:

16

} }

case 3: case 2: case 1:

case 0:putchar(?E?);break; default:printf(“error!\\n”);

4.输入x、y,计算f(x,y)的函数值。 f(x,y)定义如下:

?x?y?x2?y2?f(x,y)???x?y??x?y22x??0x?0x??0x?0y??0y?0y?0y??0解:#include void main() {

double x,y,f;

printf(“Input x y:\\n”); scanf(“%lf%lf”,&x,&y); if(x>=0&&y>=0) f=x*x+y*y;

else if(x<0&&y<0) f=x*x-y*y;

else if(x>=0&&y<0) f=x+y;

else if(x<0&&y>=0) f=x-y;

printf(“f(%f,%f)=%f\\n”,x,y,f);

}

5.输入三角形的三条边长a、b、c,计算并输出三角形的面积。要求判断输入的三条边a、b、c三个数是否能构成三角,如果不能构成三角形,则输出提示信息告诉用户。

根据三条边的边长,计算三角形面积的公式如下: s?x?y?z面积?s(s?x)(s?y)(s?z) 2 解:#include

#include void main() {

double a,b,c,s,area;

printf(“Input a b c:\\n”); scanf(“%lf%lf%lf”,&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a){ s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

17

printf(“area=%.3f\\n”,area); } else }

6.输入1~7,输出对应的星期一~星期天。

解:#include

void main() {

int s;

printf(“Input s(1~7):\\n”); scanf(“%d”,&s); switch(s){

case 1:printf(“星期一\\n”);break; case 2:printf(“星期二\\n”);break; case 3:printf(“星期三\\n”);break; case 4:printf(“星期四\\n”);break; case 5:printf(“星期五\\n”);break; case 6:printf(“星期六\\n”);break;

} }

7.输入年、月、日,输出是该年的第几天。

解:#include

void main() {

int y,m,d,days;

printf(“Input 年 月 日:\\n”); scanf(“%d%d%d”,&y,&m,&d); days=d; switch(m){

case 12:days+=30; case 11:days+=31;

case 10:days+=30; case 9:days+=31; case 8:days+=31; case 7:days+=30; case 6:days+=31; case 5:days+=30; case 4:days+=31; case 3:

if(y%4==0&&y0!=0||y@0==0)

days+=29;

18

printf(“线段%f,%f,%f不能构成三角形\\n”,a,b,c);

case 7:printf(“星期天\\n”);break;

default:printf(“The s is error!\\n”);

}

}

else days+=28; case 2:days+=31;

printf(“%d月%d日是%d年的第%d天\\n”,m,d,y,days);

8.输入n和相应的n个数,输出它们中所有奇数的乘积。

解:#include

void main() {

int n,i,t,x;

printf(“请输入 n:\\n”); scanf(“%d”,&n);

printf(“请输入%d个数:\\n”,n); for(i=1,t=1;i<=n;i++){ scanf(“%d”,&x); if(x%2==1) t*=x; }

printf(“%d\\n”,t); }

9.输入一个正整数,求它们所有数字之和。

解:#include

void main() {

int a,sum=0;

printf(“请输入一个正整数:\\n”); scanf(“%d”,&a); a=a>=0?a:-a; while(a!=0){ sum+=a; a/=10; }

printf(“%d\\n”,sum); }

10.输入n和相应的n个数,统计输入的数中负数、零及正数的个数。

解:#include

void main() {

int n,i,t,s,k; double x; t=s=k=0;

19