《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;