C语言实验报告第3章答案.docx
《C语言实验报告第3章答案.docx》由会员分享,可在线阅读,更多相关《C语言实验报告第3章答案.docx(17页珍藏版)》请在冰豆网上搜索。
![C语言实验报告第3章答案.docx](https://file1.bdocx.com/fileroot1/2023-2/4/2362554c-a913-4ca6-9752-eeaa172da54b/2362554c-a913-4ca6-9752-eeaa172da54b1.gif)
C语言实验报告第3章答案
3.2基础实验
一、程序分析
1.以下程序若输入’a’,则输入格式为:
__c1=a____;运行结果为:
___a,A↙_____。
#include
intmain()
{charc1,c2;
scanf(“c1=%c”,&c1);
c2=c1-32;
printf(“%c,%c\n”,c1,c2);
return0;
}
2.以下程序如果使得a的值为2、b的值为3,则输入格式为:
_a=2,b=3__;运行结果为:
_2,3↙_。
#include
intmain()
{inta,b;
scanf(“a=%d,b=%d”,&a,&b);
printf(“%d,%d\n”,a,b);
return0;
}
3.以下程序若输入12.3、7.6、1.1,则输入格式为:
_12.37.61.1__;运行结果为:
_aver=7.00___。
#include
intmain()
{floata,b,c,d;
scanf(“%f%f%f”,&a,&b,&c);
d=(a+b+c)/3;
printf(“aver=%.2f”,d);
return0;
}
二、程序填空
1.输入一个四位整数,求各位数字之和(如1234,则结果为1+2+3+4=10)。
若输入3562,则运行结果为:
___3+5+6+2=16↙____________。
#include
intmain()
{intn,a,b,c,d,m;
scanf(“%d”,&n);
a=n%10;
b=(n/10)%10;
c=(n/100)%10;
d=__n/1000________;
m=__a+b+c+d________;
printf(“%d+%d+%d+%d=%d\n”,d,c,b,a,m);
return0;
}
2.给定一个华氏法表示的温度值,将其转换为摄氏法表示的温度,转换公式为则运行结果为:
__f=64.00,c=17.78↙__。
#include
intmain()
{floatf,c;
f=64.0;
c=__(f-32)*5.0/9.0_________________;
printf(“f=%.2f,c=%5.2f\n”,f,c);
return0;
}
三、程序改错
1.分析以下程序段,找出错误并改正。
行号
源程序
1
2
3
4
5
6
7
8
#include
main()
{inti;floatk;
scanf(“i=%d”,i);
k=3.12*i;
printf(“%.2f\n”,k);
return0;
}
找错
错误在4行
应改为:
scanf(“i=%d”,&i);
调试正确后的运行结果
输入数据:
i=17
运行结果:
53.04↙
2.分析以下程序段,找出错误并改正。
行号
源程序
1
2
3
4
5
6
7
8
#include
main()
{chara;intb;floatc;doubled;
scanf(“%c,%d,%f,%lf”,&a,&b,&c,&d);
putchar(a\n);
printf(“%d,%0.2f,%.2lf\n”,b,c,d);
return0;
}
找错
错误在5行
应改为:
putchar(a);putchar(“\n”);
调试正确后的运行结果
输入数据:
A,19,12.3,10.98
运行结果:
A↙19,12.30,10.98
四、程序设计
1.对输入的字符进行加密,加密规则为“输入4个字符,将每个字符加4后转换成加密字符”,如输入“Ab2c”则加密后的字符序列为“Ef6g”。
1.#include
intmain()
{charc1,c2,c3,c4;
scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);
c1+=4;
c2+=4;
c3+=4;
c4+=4;
printf(“%c%c%c%c\n”,c1,c2,c3,c4);
return0;
}
3.3拓展实验
一、程序分析
1.⊙以下程序若输入3.4、12.0、8.9,则输入格式为:
3.4,12.0,8.9,运行结果为:
7.20↙。
#include
#include
intmain()
{floata,b,c;
floats,area;
scanf(“%f,%f,%f”,&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“%.2f\n”,area);
return0;
}
2.以下程序若输入C和2,则运行结果分别为:
__'F'和'5'_________。
#include
intmain()
{charc1;
intc2=0;
c1=getchar();
c2=c1+3;
putchar('\'');putchar(c2);putchar('\'');
return0;
}
二、程序填空
1.⊙以下程序实现按由大到小顺序输出任意两个整数。
若输入3562,则运行结果为:
__62,35↙__。
#include
intmain()
{intm,n;
scanf(“%d%d”,_&m,&n_______);
n>=m?
printf(“%d,%d\n”,n,m):
_printf(“%d,%d\n”,m,n)________;
return0;
}
2.以下程序实现输入任意两个整数,完成加、减、乘、除、求余操作并运行结果。
若输入29、18,则运行结果为:
_29+18=47,29-18=11,29*18=522,29/18=1,29%18=11_。
#include
intmain()
{intx,y;
printf(“请输入x,y的值:
”);
scanf(“%d%d”,&x,&y);
printf(“%d+%d=%d,”,_x,y,x+y________);
printf(“%d-%d=%d,”,_x,y,x-y_________);
printf(“%d*%d=%d,”,_x,y,x*y_______);
printf(“%d/%d=%d,”,_x,y,x/y________);
printf(“%d%%%d=%d”,_x,y,x%y____);
return0;
}
三、程序改错
1.分析以下程序段,找出错误并改正。
行号
源程序
1
2
3
4
5
6
7
8
#include
main();
{chari;intj;
scanf(“i=%d,j=%d”,&i,&j);
j=i+j/2;
printf(“%c%c\n”,i,j);
return0;
}
找错
错误在2行
应改为:
main()
调试正确后的运行结果
输入数据:
i=65,j=5
运行结果:
AC
2.分析以下程序段,找出错误并改正。
行号
源程序
1
2
3
4
5
6
7
8
9
#include
#include
#definepi=3.1416
main()
{floatr;
scanf(“r=%f”,&r);
printf(“%.2f,%.2lf\n”,pi*pow(r,2),2pi*r);
return0;
}
找错
错误在3,7行
应改为:
#definepi3.1416
printf(“%.2f,%.2lf\n”,pi*pow(r,2),2*pi*r);
调试正确后的运行结果
输入数据:
r=2
r=3
运行结果:
12.57,12.57↙
28.27,18.85↙
四、程序设计
1.输入圆的半径,输出该圆的周长和面积,结果保留2位小数。
2.⊙求ax2+bx+c的根,a、b、c从键盘输入,结果保留2位小数。
1.#include
intmain()
{floatr,s,area;
scanf(“%f”,&r);
s=2*3.14*r;
area=3.14*r*r;
printf(“周长为%.2f,面积为%.2f\n”,r,area);
return0;
}
2.#include
#include
intmain()
{floata,b,c,x1,x2,disc,p,q;
scanf(“%f%f%f”,&a,&b,&c);
disc=sqrt(b*b-4*a*c);p=-b/2/a;q=disc/2/a;
x1=p+q;x2=p-q;
printf(“x1=%.2f,x2=%.2f\n”,x1,x2);
return0;
}
3.4习题
一、选择题
1.以下4个选项中,不能看作一条语句的是()。
A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;
2.以下叙述中错误的是()。
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
3.⊙已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是()。
inta1,a2;charc1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
A.10A20B↙B.10A20B↙C.10A20B↙D.10A20B↙
4.有输入语句:
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是()。
A.132↙B.1,3,2↙C.a=1b=3c=2↙D.a=1,b=3,c=2↙
5.若定义x为double型变量,则能正确输入x值的语句是()。
A.scanf(“%f”,x);B.scanf(“%f”,&x);
C.scanf(“%lf”,&x);D.scanf(“%5.1f”,&x);
6.已知i,j,k为int型变量,若从键盘输入:
1,2,3<回车>,以下选项中正确的输入语句是()。
A.scanf(“%2d%2d%2d”,&i,&j,&k);B.scanf(“%d_%d_%d”,&i,&j,&k);
C.scanf(“%d,%d,%d”,&i,&j,&k);D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
7.⊙若运行时输入:
↙,则下列程序运行结果为()。
inta,b;
scanf(“%2d%2d”,&a,&b);
printf(“%d\n”,a+b);
A.46B.579C.5690D.出错
8.以下说法正确的是()。
A.输入项可以为一实型常量,如scanf(“%f”,3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);
D.当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);
9.⊙以下程序若输入:
12<回车>,运行结果是()。
#include
intmain()
{chara,b;intn,m;
a=getchar();b=getchar();
n=a-’0’;m=n*10+(b-’0’);
printf(“%d\n”,m);
return0;
}
A.112 B.12 C.120D.出错
10.⊙以下程序的运行结果是()。
#include
intmain()
{intx=102,y=012;
printf(“%2d,%2d”,x,y);
return0;
}
A.10,01B.002,12C.102,10D.02,10
11.⊙printf函数中用到格式符%ms,其中数字m表示输出的字符串占的总列数。
如果m为负整数,则输出方式为()。
A.从左起输出该字串,当指定列数大于实际列数时右补空格
B.按原字符长从左向右全部输出
C.右对齐输出该字串,当指定列数大于实际列数时左补空格
D.输出错误信息
12.⊙设有如下程序段:
intx=17,y=18,z=19;
printf(“%d\n”,(x,y,++z));则以下叙述正确的是()。
A.输出语句中格式说明的个数少于输出项的个数,不能正确输出
B.运行时产生出错信息C.输出值为17,18,20D.输出值为20
13.有以下程序
#include
intmain()
{chara1='M',a2='m';
printf(“%c\n”,(a1,a2));
return0;
}以下叙述中正确的是()。
A.程序输出大写字母M B.程序输出小写字母m
C.格式说明符不足,编译出错D.程序运行时出错
14.putchar()函数可以向终端输出一个()。
A.整型变量表达式值B.实型变量值
C.字符串D.字符或字符型变量值
15.⊙以下程序若输入:
123<回车>45678<回车>,则运行结果是()。
#include
intmain()
{chara,b,c,d,e,f;
scanf(“%c%c%c%c”,&a,&b,&c,&d);
e=getchar();
f=getchar();
putchar(a);
putchar(b);
printf(“%c%c\n”,e,f);
return0;
}
A.1267B.1256C.1278D.1245
二、填空题
1.复合语句是用一对_____大括号____界定的语句块。
2.printf函数和scanf函数的格式说明都使用____%____字符开始。
3.在C语言中,输入操作是由库函数_scanf完成,输出操作是由库函数_printf完成。
4.在C语言中,字符输出是由库函数_putchar完成,字符输入是由库函数_getchar完成。
5.字符输出函数putchar每次输出_1___个字符。
三、程序分析题
1.⊙用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',则在键盘输入格式为:
a=3b=78.57.182e1Aa。
#include
intmain()
{inta,b;
floatx,y;
charc1,c2;
scanf(“a=%db=%d”,&a,&b);
scanf(“%f%e”,&x,&y);
scanf(“%c%c”,&c1,&c2);
printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);
return0;
}
2.以下程序的运行结果是a=12345,b=-1.98e+002,c=6.50↙。
#include
intmain()
{inta=12345;
floatb=-198.345,c=6.5;
printf(“a=%4d,b=%-10.2e,c=%6.2f\n”,a,b,c);
return0;
}
3.以下程序的运行结果是x=1y=2*sum*=3↙10Squaredis:
100↙。
#include
intmain()
{intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10Squaredis:
%d\n”,10*10);
(1)10
(2)10
(3)56.
(4)3.
return0;
}
4.以下程序运行结果是。
#include
intmain()
{intx=10;
floatpi=3.1416;
printf(“
(1)%d\n”,x);
printf(“
(2)%6d\n”,x);
printf(“(3)%f\n”,56.1);
printf(“(4)%14f\n”,pi);
return0;
}
5.⊙以下程序若输入100↙,则运行结果是_____yes_________________。
#include
intmain()
{inta;
scanf(“%d”,&a);
printf(“%s”,(a%2!
=0)?
“No”:
”Yes”);
}
四、程序填空题
1.以下程序实现的功能是输入一个字符,输出该字符的后4位,请将程序补充完整。
#include
intmain()
{intc1;
c1=getchar();
putchar(__c1+4_____);
return0;
}
2.以下程序的功能是输出s1,x,y的值,保留原小数位数,请将程序补充完整。
#include
intmain()
{floatx=655.35;
doubley=765.4271;
chars1='c';
printf(“__%c,%.2f,%.4lf___”,s1,x,y);
return0;
}
3.以下程序是使用“*”在屏幕上显示一个C,请将程序补充完整。
#include“stdio.h”
intmain()
{printf(“HelloC-world!
\n”);
printf(“__****\n____”);
printf(“*\n”);
printf(“*\n”);
printf(“****\n”);
}
4.要求按照以下形式输入3个整数并完成计算,请将程序补充完整。
从键盘输入:
a=13,b=14,c=25<回车>
#include
intmain()
{inta,b,c;
scanf(“_a=%d,b=%d,c=%d__________”,&a,&b,&c);
printf(“%d\n”,a+b*c);
}
五、程序设计题
1.编写程序,输入一个人三门课的成绩,输出其平均成绩。
1.#include
intmain()
{floatx1,x2,x3,avg;
scanf(“%f%f%f”,&x1,&x2,&x3);
avg=(x1+x2+x3)/3;printf(“avg=%f\n”,avg);
return0;
}