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

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

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

else if(x<0) s++; else k++; }

printf(“负数:%d\\t零:%d\\t正数:%d\\n”, s, k, t); }

11.输入10个学生的成绩,输出最低分数。

解:#include

void main() {

int i;

double score,min;

printf(“请输入 10个学生成绩:\\n”); scanf(“%lf”,&score);

min=score; // 给min赋初值 for(i=1;i<10;i++){

}

}

printf(“min=%g\\n”, min);

scanf(“%lf”,&score); if(min>score)

min=score;

解:#include

void main() {

int i;

double score,min;

printf(“请输入 10个学生成绩:\\n”); for(i=1;i<=10;i++){

}

printf(“min=%g\\n”, min);

20

scanf(“%lf”,&score); if(i==1)

min=score; min=score; if(min>score)

}

12.青年歌手大奖赛中,10个评委给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分。计算并输出选手张三的得分。(注:如果最高分或最低分有多个相同时,去掉其中一个)

解:#include

void main() {

int i;

double score,min,max,sum,aver;

printf(“请输入 10个评委给张三的评分:\\n”); scanf(“%lf”,&score); min=max=sum=score; for(i=1;i<10;i++){

}

}

aver=(sum-max-min)/8;

printf(“张三得分:%g\\n”, aver);

scanf(“%lf”,&score); if(min>score)

min=score; max=score; if(max

解:#include

void main() {

int i;

double score,min,max,sum=0,aver;

}

printf(“请输入 10个评委给张三的评分:\\n”); for(i=1;i<=10;i++){

}

aver=(sum-max-min)/8;

printf(“张三得分:%g\\n”, aver);

scanf(“%lf”,&score); if(i==1)

max=min=score; min=score; max=score; if(min>score) if(max

21

13.用循环语句输出26个大写字母及它们的ASCII码值。

解:#include

void main() {

char c;

for(c=?A?;c<=?Z?;c++)

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

解:#include

void main()

{ char ch='A'; while( ch<='Z'){

printf(\ ch++;

} }

14.输出所有的“水仙花数”,水仙花数是指一个三位数,其各位数字的立方和等于其本身,如:153=13+53+33。

解:#include

void main() {

int x,a,b,c;

}

printf(“水仙花数:\\n”); for(x=100;x<1000;x++){

}

printf(“\\n”);

a=x/100; b=x0/10; c=x;

if(x==a*a*a+b*b*b+c*c*c)

printf(“%d\\t”, x);

11111?????n前40项的和。 23456解:#include

void main() {

int i;

double sum=0,flag=1; for(i=1;i<=40;i++){

15.求算式1?

sum+=flag/i;

flag=-1*flag; // 或flag=-flag

22

}

}

printf(“sum=%g\\n”,sum);

16.输出一张华氏与摄氏温度对照表,将华氏温度从30°~40°F之间的每度转换对应的摄氏温度输出。张华氏转化为摄氏温公式:c=5/9(F-32)

解:#include

void main() {

double f,c;

for(f=30;f<=40;f++){

}

}

c=5.0/9*(f-32);

printf(“%g\\t%g\\n”,f,c);

*17.求数列的和。设数列的首项为81,以后各项为前一项的平方根(如81,9,3,1.732,?),求前20项和。

解:#include

#include void main() {

int i;

double sum=0,a=81; for(i=1;i<=20;i++){

}

}

printf(“sum=%g\\n”,sum);

sum+=a;

a=sqrt(a); // 下一项为前一项的平方根

18.输出一个如下的乘法口诀表。 1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9 ???

1×9=9 2×9=18 3×9=27 ??? 9×9=81 解:#include

void main() {

int i,j;

for(i=1;i<=9;i++){

for(j=1;j<=i;j++)

printf(“%d*%d=%d\\t”,j,i,i*j);

23

}

}

printf(“\\n”);

*19.猴子吃桃子。第1天猴子吃掉桃子总数一半多一个,第2天又将剩余的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第十天准备吃的时候只剩下一个桃子。请问第1天开始吃的时候桃子的总数。

//递推公式 x=2*(x+1)

解:#include

void main() {

int n,x;

x=1; //第10天的挑子数 for(n=9; n>=1; n--)

{ x=2*(x+1); //计算第n天的桃子数 }

printf(\第1天吃前挑子总数=%d\\n\ }

*20.用循环体编程序,分别输出如下两个图形,如图4.15所示。*

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 左图

解:#include void main() {

int i,j;

for(i=1;i<=4;i++) {

for(j=1;j<=8-2*i;j++)

putchar(' ');

for(j=1;j<=2*i-1;j++)

printf(\ putchar('\\n'); } }

右图

解:#include

void main() {

24

*

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4