C语言程序设计练习题答案Word文档格式.docx
《C语言程序设计练习题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习题答案Word文档格式.docx(73页珍藏版)》请在冰豆网上搜索。
(1)#include<
stdio.h>
intmain(void)
{
printf("
ThisismyfirstCprogram.\n"
);
AndprogramminginCisevenmorefun.\n"
return0;
}
(2)#include<
ThisismyfirstCprogram.\nAndprogramminginCisevenmorefun.\n"
实验4
(1)计算33+56的和。
解题思路:
将例1.2中变量值改为33与56代码如下:
#include<
intmain(void)
intvalue1,value2,sum;
value1=33;
value2=56;
sum=value1+value2;
printf(“%d+%d=%d\n”,value1,value2,sum);
(2)计算1+2+3+4+5
可以分别建立五个变量value1,value2,value3,value4,value5,赋值后计算value1+value2+value3+value4+value5,代码如下:
intvalue1,value2,value3,value4,value5,sum;
value1=1;
value2=2;
value3=3;
value4=4;
value5=5;
sum=value1+value2+value3+value4+value5;
printf(“%d+%d+%d+%d+%d=%d\n”,value1,value2,value3,value4,value5,sum);
实验5
根据摄氏度与华氏温度转换公式进行转换,代码如下:
intmain(){
floatf,c;
f=27.0;
c=(f-32)/1.8;
printf("
f=%f\nc=%f\n"
f,c);
return0;
}
1.2课后实训项目
一、选择题
1.C;
2.D;
3.A;
4.C;
5.A
二、填空题
1.main函数
2.;
3.编译
三、分析下面程序,写出运行结果
1.Theresultis95
2.wearestudents.
IbegintostudyClanguage.
四、找出下面程序中的所有语法错误,然后在计算机上运行输出正确结果。
1.
(1)Void应为void;
(2)INT应为int;
(3)“/*COMPUTERESULT”后缺少“*/”;
(4)“printf("
Theansweris%i\n"
sum);
”应为“printf("
Theansweris%d\n"
sum);
2.
(1)缺少预处理指令#include<
;
(2)没有声明value1,value2。
3.
(1)缺少main函数#include<
(2)没有对value1,value2进行声明;
(3)输出语句中“Thesumofvalue1andvalue2is%d\n”缺少双引号;
(4)函数体应由{}括起来。
2.1上机实训项目
实验1解题思路:
根据运行结果,了解各种数据类型在内存所占用空间的大小,运行结果如下:
intis4B
charis1B
longintis4B
unsignedintis4B
floatis4B
doubleis8B
实验2解题思路:
根据例子,分析VC++6.0短整数、字符型和float型数据的范围,运行结果如下:
s=32767c=127f=3.1234e+038
s=-32768c=-128f=1.#INF(越界)
通过程序运行结果可知:
VC++6.0短整数范围-32768~32767;
字符型范围-128~127;
float型范围:
0以及-3.4*10-38~3.4*1038
实验3解题思路:
错误1“j=++3;
”应为“j=++i;
”。
++与—运算符只能用于变量,不能用于常量或者表达式,如5++或者(a+b)++都是不合法的。
错误2“k=5.0%2;
”应为“k=5%2;
%运算符要求参加运算的对象为整数,结果也是整数。
实验4解题思路,代码如下:
#include<
intmain(){
inta=3,b=4,c=5;
doublex=1.2,y=2.4,z=-3.6;
longintu=51274,n=128765;
charc1='
a'
c2='
b'
;
a=%db=%dc=%d\n"
a,b,c);
x=%7.6fy=%7.6fz=%7.6f\n"
x,y,z);
x+y=%3.2fy+z=%3.2fz+x=%3.2f\n"
x+y,y+z,z+x);
u=%dn=%d\n"
u,n);
c1='
%c'
or%d\n"
c1,c1);
c2='
c2,c2);
实验5错误:
“average=1/2*(96+55);
”应改为“average=1.0/2.0*(96+55);
解题思路:
两个整数相除的结果是整数,需要改为两个实数相除。
2.2课后实训项目
1)C以0开头的数字是8进制数字,但是8进制数字里面是没有8的(满8进位),所以出错;
2)C;
3)D;
4)D;
5)D;
6)B;
m为(n*100+0.5)取整数部分,相当于四舍五入;
7)A;
8)C;
9)BA赋值表达式,Cy=y++=5,在C语言++,--都不能位于“=”左边,D强制类型转换;
10)Bx=x+x-(x-x);
11)A;
12)C;
13)D
1)标识符;
2)变量;
3)整型、字符型、长双精度型;
4)字母、数字、下划线;
5)4B;
6)f;
7)pow(e,x*x+y*y)*(1/fabs(x-y));
8)3.5
1.i=2,j=2
i=2,j=3
2.119,w
97,a
3.24,683
3.456000,53400.000000
4.220.000000
5.-6
1.#include<
floata=5,b=3;
错误:
应为inta=5,b=3;
a%%b=%d\n"
a%b);
}
运行结果:
a%b=2
2.#include<
intmian()错误1:
main
{
charc=’China’;
错误2;
将字符串赋给字符变量
printf(‘c=%c\n’,c);
错误3:
双引号
Return0;
错误4:
return首字母小写
}
运行结果c=C
3.#include<
intmain()
{inta,b,c;
a=2;
b=3;
C=a+b;
C未定义
printf(“%d+%d=%d\n”,a,b,c);
运行结果:
2+3=5
五、程序设计题
1.解题思路:
需要知道三角形求面积公式s=底*高*0.5,根据公式进行编程,代码如下:
doublea,b,c;
a=5.0;
b=6.0;
c=a*b/2;
areais%f"
c);
2.解题思路:
知道根据半径r求圆形周长公式l=2
以及面积公式S=
,代码如下:
#definePI3.1416
doublea,area,length;
area=PI*a*a;
length=2*PI*a;
areais%fandlengthis%f\n"
area,length);
3.解题思路:
已知边长a,正方形求面积公式s=a2,代码如下:
doublea,area;
a=6.0;
area=a*a;
areais%f\n"
area);
4.解题思路:
已知圆柱体的底面半径a,高h,圆柱体体积c=
doublea,h,cube;
h=10.0;
cube=PI*a*a*h;
cubeis%f\n"
cube);
3.1上机实训项目
实验11略
2.答:
输出为ab,此时c1=‘a’,c2=‘’,c3=‘b’
3.答:
输出为a
b
此时c1=‘a’,c2=‘回车’,c3=‘b’
4.答:
输入123<
回车>
实验2下面程序是的功能是输入两个整数,输出其和,试调试运行。
intmain()
intx,y;
printf("
请输入两个整数:
\n"
scanf("
x=%d,y=%d"
&
x,&
y);
%d%+%d=%d\n"
x,y,x+y);
多写一个%,输出错误。
return0;
实验3 解题思路:
调用scnaf与printf函数输入输出字符数据,代码如下:
chara,b,c;
%c"
a);
b);
c);
a);
b);
实验4下面程序是输入1个整数和1个实数,然后其值,找出其中的错误。
intmain()
{longx;
doubley;
%f,%f"
错误1:
scanf("
%ld,%lf"
,double型数据输入要用%lf;
x=%f,f=%f\n"
x,y);
错误2:
printf("
x=%d,f=%f\n"
,x为整数;
缺少return0;
}
实验5代码如下:
scanf(_____“%d,%f”,&
x,&
y__________);
printf(_______“x+y=%f”,x+y________)
课后实训项目
1)D;
2)D;
3)C;
5)B;
6)A;
7)B;
8)B;
9)C;
10)B如果使用的格式符与对应的变量类型不一致,有可能造成读取错误的数据,但系统不报错;
11)C;
13)C赋值语句的对象只能是变量,而不是表达式;
14)A;
15)A;
16)D
1)3;
2)%%;
3)格式控制,输出表列;
4)%d,%c,%s;
5)&
a,&
b;
a=b
三、程序阅读题
1.运行结果A,66
2.运行结果1,65,1.5,6.5
3.输出结果为i:
dec=14,otc=177774,hex=fffc,unsigned=65532
4.输出结果是1234
四、改错题
1.下面程序编译时无错误,运行程序时,从键盘输入1,2,但输出结果不正确,找出程序中的错误并改正之。
voidmain()
{intx,y;
scanf(
"
%d,%d"
改错:
scanf(
printf(
2.下面程序是输入两个double型数据,然后输出的和,找出错误并改正之
doublex,y;
scanf(“%f%f”,&
改错1:
scanf(“%lf%lf”,&
printf(“x+y=%f\n,x+y);
改错2:
printf(“x+y=%f\n”,x+y);
设置两个整数给变量a,b,输入的大数放在a中,输入的小数放在b中,利用a/b和a%b分别求他们的商和余数,代码如下:
inta,b,c;
intd,e;
scanf("
a,&
if(a<
b)
{
c=a;
a=b;
b=c;
d=a/b;
e=a%b;
a=%d,b=%d,d=%d,e=%d\n"
a,b,d,e);
用%(求余)。
比如输入321,321%100=21用321-(321%100)再除以100即可得:
(321-(321%100))100=3同样,用21%10=1再除以10即可得:
((321%100)-((321%100)%10))/10=2最后,1-(1%1)=1。
代码如下:
inta;
intb,c,d;
%d"
b=a%10;
c=a/10%10;
d=a/100;
a=%d,b=%d,c=%d,d=%d"
a,b,c,d);
4.1上机实训项目
实验1正确程序代码为:
floata,b,c,t;
scanf(“%f,%f,%f”,&
b,&
if(a>
b)
{t=a;
a=b;
b=t;
}//if语句后是个复合语句,需要加上花括号
c)
c=a;
c=t;
if(b>
{t=b;
b=c;
printf(“%f,%f,%f\n”,a,b,c);
实验2解题思路:
分段函数计算,根据不同的x,按照条件选择建立不同的分支执行。
参考代码如下:
floatx,y;
Pleaseinputx:
%f"
x);
if(x<
1.0)
y=x;
elseif((x>
1.0)&
&
(x<
10.0))
y=2*x-1;
elseif(x>
=10.0)y=3*x-11;
Thevalueofyis:
%f\n"
y);
实验3解题思路:
ASCII代码表示的小写字母比大写字母值大32,首先判断是否大写字母,如果是,则当前值加32,如果是小写字母,则当前值减32。
#include<
charch;
ch);
if(ch>
='
A'
ch<
Z'
)
ch=ch+32;
elseif(ch>
z'
ch=ch-32;
%c\n"
ch);
实验4解题思路:
首先要明确构成三角形的条件,两边之和大于第三遍;
然后根据等边三角形(三边相等)、等腰三角形(两边相等)、直角三角形(直角边平方和等于斜边平方)分别进行判断,参考代码如下:
math.h>
voidmain(){
inta,b,c;
intk,i,j;
intm,o,p;
inta1,b1,c1;
输入三条边:
%d,%d,%d"
c);
i=a*a+b*b-c*c;
j=b*b+c*c-a*a;
k=a*a+c*c-b*b;
m=abs(a-b);
o=abs(a-c);
p=abs(c-b);
a1=a+b;
b1=b+c;
c1=a+c;
if((a1>
c)&
(b1>
a)&
(c1>
b)&
(m<
(o<
(p<
a)){
if((m==0)&
(o==0))
printf("
这是一个等边三角形。
elseif((m==0)||(o==0)||(p==0))
这是一个等腰三角形。
elseif((i==0)||(j==0)||(k==0))
这是一个直角三角形!
elseprintf("
这是一个任意三角形!
elseprintf("
这不是一个三角形!
实验5解题思路:
根据不同的距离,确定折扣和运费,参考代码如下:
doublecost(doublex,doubley,doublez,doublep);
doublef,p,w,s,d;
请输入距离:
%lf"
s);
\n请输入运费:
p);
\n请输入货物重量:
w);
if(s<
250.0){
d=0;
f=cost(p,w,s,d);
elseif((s>
=250.0)&
(s<
500.0)){
d=0.05;
=500.0)&
1000.0)){
d=0.1;
=1000.0)&
2000.0)){
d=0.15;