c程序设计实验参考答案

《C程序设计上机指导》答案 实验一参考答案

四. 1、 Hello, world ! Welcome to the C language world! Everyone has been waiting for. 2、 a+b=579 579 五. 1、 b=2; 2、 int a; 3、 area

六. x=5,y=8, 改为x=5,y=8; 七.写程序

1、编写程序输出用6颗星构成的等边三角形。 main() {

printf(\ * \\n\printf(\printf(\}

2、 编写程序求25和5两个整数的和与差。 main() {

int a,b,c,d; a=10; b=20; c=35;

d=(a+b+c)/3; printf(\}

实验二参考答案: 一.1、 A , 65 B, 66

2、 x=1,y=1,z=5

3、 a=%d,b=%d 二.1、 char a;int b; 2、 a,a,a 3、a=865 a,h,m

4、 u=2*sqrt(a)+b-10; “%f\\n”

三.1、 第1行 ch1=’a’; 改为char ch1=’a’; 第2行 ch2=98; 改为char ch2=98;

2、 第7行 w=x%y; 改为w=x/y; 3、 int u=v=89; 改为int u,v; u=v=89;

4、 第3行改为scanf(“%d,%d”,&x,&y); //格式字符串有错。

第5行改为printf(\格式字符串有错。 四. 写程序

111??1、编程求234的和(精确到小数点后两位)。

main( )

{ float i;

i=1.0/2+1.0/3+1.0/4;

printf(\

}

2、鸡兔同笼。总头数head=60,总脚数feet=160。编程求鸡、兔各多少只。 main( )

{ int h=60,f=160;

int r,c;

r=(f-2*h)/2; c=h-r;

printf(\}

3、输入圆半径(5),输出圆的面积。 main( ) { float r;

scanf(“%f”,&r);

s=3.14159*r*r; printf(\}

实验三参考答案:

一.1、 2.4 * x - 1 / 2=23.500000

x % 2 / 5 – x=-10.000000

y = ( x -= x * 10 , x /= 10 )=0

2、(1)9,11,9,10

(2)9,11,8,11 (3)8,10 (4)9,11

(5)9,11,8,10 (6)9,9,8,-9 二.1、 a%=(b/=2) 2、 c=(char)i; 三.

1、 5行 printf(\ 改为 printf(“%d,%d,%d”,u-v,u+v,w); 2、 4行 n=int(f+20)%3; 改为 n=(int)(f+20)%3; 3、 正确。输入数字字符:5 5对应的数字为:53 四.写程序

1、 设j=6,求表达式 –(j++)-3的值和此时j的值。 #include

main( ) {int j=6; int i;

i=-(j++)-3;

printf(\}

2、 设a=10,求表达式a%=a+=a-=a*a的值。 #include

main( ) {int a=10;

printf(\}

实验四 参考答案:

一.1、 output integer,17, 17,17 ,0000017

1234.567017,1234.57

2、 x=12,y=5

3、 x=-45.200001,k1=-35y=1.100000,k2=11 二.1、 c2=c1-32;

2、 c=(a+b)*4/(a*b);

3、 s=a*pow(1+p,n) ―a; 三.

1、2行 加int j=6

2、7行 m=100*a+10*b+c 改为m=100*c+10*b+a; 四.写程序

编程求出某学生期末三门课程的总分及平均分。结果保留小数点后一位。 main( )

{ float a,b,c; float s,v;

scanf(\s=a+b+c; v=s/3.0;

printf(\}

实验五 参考答案

一.1、a=10,b=30,c=10

2、-2

3、a1=1 a2=1 b1=0 b2=1 4、x=2

5、输入1答案

1 2 3 4

输入3答案 3 4

二.1、ch>=’A’&&ch<=’Z ’ ch=ch-32

2、a+b>c&& c+b>a&& c+a >b a= =b&&b= =c a= =b||b= =c ||a= =c 三.

2、错误在 行应改为:if (x>3&&x<=9) y=x*(x+2); 错误在 4行应改为:else if (x>-1&&x<=3) y=2*x; 3、错误在 5行应改为:{ if (x>0) y=x+3;} 4、错误在1--6行应改为:{ int x ,y ,w; scanf(\ w=x>=0; switch(w)

{ case 1: y=2; break;

case 0: y=-2; break; }

printf(\; }

四. 输入某学生的成绩,经处理后给出学生的等级,等级分类如下:

90分以上(包括90): A 80至90分(包括80):B

70至80分(包括70):C 60至70分(包括60):D 60分以下: E 方法一:(用if嵌套`) 分析:

由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。 #include\main() {

int score; char grade;

printf(\ scanf(\ if(score>100||score<0) printf(\ else

{ if(score>=90) grade='A'; else

{ if(score>=80) grade='B'; else

{if(score>=70) grade='C'; else { if(score>=60) grade='D'; else grade='E'; } } }

printf(\ }

}

输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 方法二:用switch语句 分析:

switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A

(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。 #include\main() {

int g,s; char ch;

printf(\scanf(\s=g/10;

if(s<0||s>10)

printf(\else

{ switch (s) { case 10:

case 9: ch='A'; break; case 8: ch='B'; break; case 7: ch='C'; break; case 6: ch='D'; break; default: ch='E'; }

printf(\ }

}

实验六 参考答案: 一.1、 a=3,b=7

2、 x=5 y=0 z=0 二.1、 n;

n = n/10; 2、 n*=2

count++

三.1、 错误在 2 行应改为:while( k != 0) 2、错误在6行应改为:{ s = s+ 1.0/n ;

4、

(1)第10行应改为x=x*i

1+1++1/2+1/(2*3)+1/(2*3*4)+…… (2)当detax>1时,不进入循环 不会只循环一次

当detax=1时,循环2次 当detax=0时,进入死循环 为了能知道程序循环次数,应在程序第15行后加语句printf(\

(3)

(4)死循环 (5)没变化 四.main()

{ int day,x,y;

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