C语言实验报告第3章答案.docx
《C语言实验报告第3章答案.docx》由会员分享,可在线阅读,更多相关《C语言实验报告第3章答案.docx(18页珍藏版)》请在冰豆网上搜索。
C语言实验报告第3章答案
3.2基础实验
一、程序分析
1.以下程序若输入’a’,则输入格式为:
c1=a;运行结果为:
。
#includeintmain()
{charc1,c2;
scanf(“c1=%c”,&c1);c2=c1-32;
printf(“%c,n%”c,c1,c2);return0;
a,A↙
}
2.以下程序如果使得a的值为2、b的值为3,则输入格式为:
_a=2,b=3;运行结果为:
_2,3↙_。
#includeintmain()
{inta,b;scanf(“a=%d,b=%d”,&a,&b);
printf(“%n”a,,b);
return0;
}
3.以下程序若输入12.3、7.6、1.1,则输入格式为:
_12.37.61.1;运行结果为:
_aver=7.00。
#includeintmain()
{floata,b,c,d;
scanf(“%f%f%f”,&a,&b,&c);d=(a+b+c)/3;
printf(av“er=%.2f”d,);
return0;
}
二、程序填空
1.输入一个四位整数,求各位数字之和(如1234,则结果为1+2+3+4=10)。
若输入3562,则运行结果为:
3+5+6+2=16↙。
#includeintmain()
{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;
}
32)
行号
1
1.
分析以下程序段,找出错误并改正。
源程序
#include
2
main()
3
{inti;floatk;
4
scanf(“i=%d”,i);
5
k=3.12*i;
6
printf(“.2f%\n”,k);
7
return0;
8
}
调试正确后的运行结果
应改为:
scanf(“i=%d”,&i);
输入数据:
i=17运行结果:
53.04↙
行号
1
2.
分析以下程序段,找出错误并改正。
源程序
#include
2
main()
3
{chara;intb;floatc;doubled;
4
scanf(“%c,%d,%f,%lf”,&a,&b,&c,&d);
5
putchar(a\n);
6
printf(“%dn”b,,c,d);
7
return0;
8
}
找错
调试正确后的运行结果
四、程序设计
错误在5行
应改为:
putchar(a);putchar(“\n”);
输入数据:
A,19,12.3,10.98运行结果:
A↙19,12.30,10.98
1.对输入的字符进行加密,加密规则为“输入4个字符,将每个字符加4后转换成加密字符”,如输入“Ab2c”则加密后的字符序列为“Ef6g”。
1.#includeintmain()
{charc1,c2,c3,c4;
scanf(“c%%c%c%c”,&c1,&c2,&c3,&c4);c1+=4;
c2+=4;c3+=4;c4+=4;
printf(“n”c,1,c2,c3,c4);
return0;
}
3.3拓展实验
一、程序分析
1.⊙以下程序若输入3.4、12.0、8.9,则输入格式为:
3.4,12.0,8.9,运行结果
为:
7.20↙。
#include#includeintmain()
{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(“%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↙。
#includeintmain()
{intm,n;
scanf(“%d”_,&m,&n);
n>=m?
printf(return0;
}
%“d,%d\n”,n,m):
_printf(“n”m,,n);
2.以下程序实现输入任意两个整数,完成加、减、乘、除、求余操作并运行
结果。
若输入29、18,则运行结果为:
_29+18=47,29-18=11,29*18=522,29/18=1,29%18=11_。
#includeintmain()
{intx,y;
printf(“请输入x,y的值:
”);scanf(“%d%d”,&x,&y);
printf(printf(printf(printf(printf(
%“d+%d=%d,”,_x,y,x+y);
%“d-%d=%d,”,_x,y,x-y);
%“d*%d=%d,”,_x,y,x*y);
%“d/%d=%d,”,_x,y,x/y);
%“d%%%d=%d”,_x,y,x%y);
return0;
}
三、程序改错
1.分析以下程序段,找出错误并改正。
4
main()
5
{floatr;
6
scanf(r“=%f”,&r);
7
printf(“%.2f
n”p,i*pow(r,2),2pi*r);
8
return0;
9
}
错误在3,7行
找错
应改为:
#definepi
3.1416
printf(“%.2f
n”p,i*pow(r,2),2*pi*r);
调试正确后
输入数据:
r=2
运行结果:
12.57,12.57↙
的运行结果
r=3
28.27,18.85↙
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,&a,2&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.)s;cBanf(“%f”,&x);
C.scanf(“%lf”,&Dx.s);canf(“%5.1f”,&x);
6.已知i,j,k为int型变量,若从键盘输入:
1,2,3<回车>,以下选项中正确的输入语句是()。
A.scanf(“%2d%2d%2”d,&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.⊙若运行时输入:
12345678↙,则下列程序运行结果为()。
inta,b;
scanf(“%2d%2”d,&a,&b);
printf(“n%”d,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(“n%”m,);return0;
}
A.112B.12C.120D.出错
10.⊙以下程序的运行结果是()。
#includeintmain()
{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.有以下程序#includeintmain()
{chara1='M',a2='m';
printf(“n%”c,(a1,a2));return0;
}以下叙述中正确的是()。
A.程序输出大写字母MB.程序输出小写字母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。
#includeintmain()
{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=%n”,a,b,c);return0;
}
3.
以下程序的运行结果是x=1y=2*sum*=3↙10Squaredis:
100↙。
#include
intmain()
{intx=1,y=2;
printf(“x=%dy=%d*sum*=%n”d,x,y,x+y);
printf(“10Squared(i1sn:
)%1”0d,10*10);
return0;
}
(2)10
(3)56.100000
(4)3.141600
4.以下程序运行结果是。
#includeintmain()
{intx=10;
floatpi=3.1416;printf(“
(1)n%”d,x);
printf(“
(2)%n6”d,x);
printf(“(3)n%”f,56.1);
printf(“(4)%n1”4f,pi);return0;
}
5.⊙以下程序若输入100↙,则运行结果是#include
intmain()
{inta;
scanf(“%d”,&a);
yes。
printf(“%s”,(a%2!
=0)?
“No”:
”Yes”);
}
四、程序填空题
1.以下程序实现的功能是输入一个字符,输出该字符的后4位,请将程序补充完整。
#includeintmain()
{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(“HelloCn”);printf(“****\n”);
printf(“n”*);
printf(“n”*);
printf(“**n*”*);
}
4.要求按照以下形式输入3个整数并完成计算,请将程序补充完整。
从键盘输入:
a=13,b=14,c=25<回车>
#includeintmain()
{inta,b,c;
scanf(_“a=%d,b=%d,c=%d”,&a,&b,&c);
printf(“n”,a+b*c);
}
五、程序设计题
1.编写程序,输入一个人三门课的成绩,输出其平均成绩。