C语言程序设计练习题答案.docx
- 文档编号:7087391
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:73
- 大小:284.64KB
C语言程序设计练习题答案.docx
《C语言程序设计练习题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习题答案.docx(73页珍藏版)》请在冰豆网上搜索。
C语言程序设计练习题答案
1.1上机实训项目
实验1实验步骤
1、进入VC环境
从“开始”→“程序”→“MicrosoftVisualStudio6.0”→“MicrosoftVisualC++6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1VC集成环境的主菜单窗口
2、VC环境下C程序的编辑、连接和运行
(1)新建一个源程序
①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示
图1-2选择新建
②在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:
\lx目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C语言程序的扩展名“.c”。
设置好后,单击“OK”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c文件存放在D盘的LX目录下。
图1-3新建对话框的设置
③在图1-4的工作区中,输入源程序
图1-4输入、编辑源程序
④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5保存源程序
⑤源程序的编译
如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compileexample.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“Thisbuildcommandrequiresanactiveprojectworksapce,Wouldyouliketocreateadefaultprojectworksapce?
”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No”,表示不同意,将取消编译。
此处选择“是”。
图1-6编译源程序
图1-7要求创建一个工作区
⑥编译完成后将如图1-8所示,此时注意编译窗口中的信息,如果有编译错误,将要对源程序进行修改,然后再重新编译,直到没有错误为止。
图1-8编译信息
⑦编译没有错误,完成并生成obj文件后,就可进入程序的连接了。
连接的目的是将程序和系统提供的资源(如函数库、头文件等)建立连接,真正生成可以执行的程序文件。
如图1-9所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“构建example.exe”(buildexample.exe),或者单击工具栏上的“构建”按钮。
执行连接后,将在调试窗口中显示连接的信息,如图1-10所示,如果连接有错误,将修改源程序,然后再编译、连接,直至没有错误为止。
图1-9程序的连接
图1-10连接后的信息
⑧程序的执行
完成了编译、连接后,就生成了可执行程序文件,些时该程序可执行了。
如图1-11所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“执行example.exe”(Executeexample.exe),或者单击工具栏上的“执行”按钮。
执行后,将出现图1-12所示的结果。
图1-11执行程序
图1-12执行的结果
实验2程序中包含三处错误,分别为:
(1)Int应为int;
(2)“sum=25+30”后缺少“;”;(3)缺少“return0;”
实验3提示:
要完成题目任务,一种方法是每一行调用一个printf函数输出,另一种方法是只调用一个printf函数输出。
代码分别如下:
(1)#include
intmain(void)
{
printf("ThisismyfirstCprogram.\n");
printf("AndprogramminginCisevenmorefun.\n");
return0;
}
(2)#include
intmain(void)
{
printf("ThisismyfirstCprogram.\nAndprogramminginCisevenmorefun.\n");
return0;
}
实验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,代码如下:
#include
intmain(void)
{
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
解题思路:
根据摄氏度与华氏温度转换公式进行转换,代码如下:
#include
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';
printf("a=%db=%dc=%d\n",a,b,c);
printf("x=%7.6fy=%7.6fz=%7.6f\n",x,y,z);
printf("x+y=%3.2fy+z=%3.2fz+x=%3.2f\n",x+y,y+z,z+x);
printf("u=%dn=%d\n",u,n);
printf("c1='%c'or%d\n",c1,c1);
printf("c2='%c'or%d\n",c2,c2);
return0;
}
实验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
intmain(void)
{
floata=5,b=3;错误:
应为inta=5,b=3;
printf("a%%b=%d\n",a%b);
return0;
}
运行结果:
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);
return0;
}
运行结果:
2+3=5
五、程序设计题
1.解题思路:
需要知道三角形求面积公式s=底*高*0.5,根据公式进行编程,代码如下:
#include
intmain(){
doublea,b,c;
a=5.0;
b=6.0;
c=a*b/2;
printf("areais%f",c);
return0;
}
2.解题思路:
知道根据半径r求圆形周长公式l=2
以及面积公式S=
,代码如下:
#include
#definePI3.1416
intmain(){
doublea,area,length;
a=5.0;
area=PI*a*a;
length=2*PI*a;
printf("areais%fandlengthis%f\n",area,length);
return0;
}
3.解题思路:
已知边长a,正方形求面积公式s=a2,代码如下:
#include
intmain(){
doublea,area;
a=6.0;
area=a*a;
printf("areais%f\n",area);
return0;
}
4.解题思路:
已知圆柱体的底面半径a,高h,圆柱体体积c=
,代码如下:
#include
#definePI3.1416
intmain(){
doublea,h,cube;
a=6.0;
h=10.0;
cube=PI*a*a*h;
printf("cubeis%f\n",cube);
return0;
}
3.1上机实训项目
实验11略
2.答:
输出为ab,此时c1=‘a’,c2=‘’,c3=‘b’
3.答:
输出为a
b
此时c1=‘a’,c2=‘回车’,c3=‘b’
4.答:
输入123<回车>
实验2下面程序是的功能是输入两个整数,输出其和,试调试运行。
#include
intmain()
{
intx,y;
printf("请输入两个整数:
\n");
scanf("x=%d,y=%d",&x,&y);
printf("%d%+%d=%d\n",x,y,x+y);错误:
多写一个%,输出错误。
return0;
}
实验3 解题思路:
调用scnaf与printf函数输入输出字符数据,代码如下:
#include
intmain()
{
chara,b,c;
scanf("%c",&a);
scanf("%c",&b);
scanf("%c",&c);
printf("%c",a);
printf("%c",b);
printf("%c",c);
return0;
}
实验4下面程序是输入1个整数和1个实数,然后其值,找出其中的错误。
#include
intmain()
{longx;
doubley;
scanf("%f,%f",&x,&y);错误1:
scanf("%ld,%lf",&x,&y);,double型数据输入要用%lf;
printf("x=%f,f=%f\n",x,y);错误2:
printf("x=%d,f=%f\n",x,y);,x为整数;
错误3:
缺少return0;
}
实验5代码如下:
scanf(_____“%d,%f”,&x,&y__________);
printf(_______“x+y=%f”,x+y________)
课后实训项目
一、选择题
1)D;2)D;3)C;4)D;5)B;6)A;7)B;8)B;9)C;10)B如果使用的格式符与对应的变量类型不一致,有可能造成读取错误的数据,但系统不报错;11)C;12)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,但输出结果不正确,找出程序中的错误并改正之。
#include
voidmain()
{intx,y;
scanf( "%d,%d",x,y);改错:
scanf( "%d,%d",&x,&y);
printf( "%d,%d",x,y);
}
2.下面程序是输入两个double型数据,然后输出的和,找出错误并改正之
#include
voidmain()
{
doublex,y;
scanf(“%f%f”,&x,&y);改错1:
scanf(“%lf%lf”,&x,&y);
printf(“x+y=%f\n,x+y);改错2:
printf(“x+y=%f\n”,x+y);
}
五、程序设计题
1.解题思路:
设置两个整数给变量a,b,输入的大数放在a中,输入的小数放在b中,利用a/b和a%b分别求他们的商和余数,代码如下:
#include
intmain(){
inta,b,c;
intd,e;
scanf("%d,%d",&a,&b);
if(a
{
c=a;
a=b;
b=c;
}
d=a/b;e=a%b;
printf("a=%d,b=%d,d=%d,e=%d\n",a,b,d,e);
return0;
}
2.解题思路:
用%(求余)。
比如输入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。
代码如下:
#include
intmain(){
inta;
intb,c,d;
scanf("%d",&a);
b=a%10;
c=a/10%10;
d=a/100;
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
return0;
}
4.1上机实训项目
实验1正确程序代码为:
#include
intmain()
{
floata,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}//if语句后是个复合语句,需要加上花括号
if(a>c)
{t=a;c=a;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf(“%f,%f,%f\n”,a,b,c);
return0;
}
实验2解题思路:
分段函数计算,根据不同的x,按照条件选择建立不同的分支执行。
参考代码如下:
#include
intmain(){
floatx,y;
printf("Pleaseinputx:
\n");
scanf("%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;
printf("Thevalueofyis:
%f\n",y);
return0;
}
实验3解题思路:
ASCII代码表示的小写字母比大写字母值大32,首先判断是否大写字母,如果是,则当前值加32,如果是小写字母,则当前值减32。
参考代码如下:
#include
intmain()
{
charch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
ch=ch+32;
elseif(ch>='a'&&ch<='z')
ch=ch-32;
printf("%c\n",ch);
return0;
}
实验4解题思路:
首先要明确构成三角形的条件,两边之和大于第三遍;然后根据等边三角形(三边相等)、等腰三角形(两边相等)、直角三角形(直角边平方和等于斜边平方)分别进行判断,参考代码如下:
#include
#include
voidmain(){
inta,b,c;
intk,i,j;
intm,o,p;
inta1,b1,c1;
printf("输入三条边:
\n");
scanf("%d,%d,%d",&a,&b,&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 if((m==0)&&(o==0)) printf("这是一个等边三角形。 \n"); elseif((m==0)||(o==0)||(p==0)) printf("这是一个等腰三角形。 \n"); elseif((i==0)||(j==0)||(k==0)) printf("这是一个直角三角形! \n"); elseprintf("这是一个任意三角形! \n"); } elseprintf("这不是一个三角形! \n"); } 实验5解题思路: 根据不同的距离,确定折扣和运费,参考代码如下: #include intmain(){ doublecost(doublex,doubley,doublez,doublep); doublef,p,w,s,d; printf("请输入距离: "); scanf("%lf",&s); printf("\n请输入运费: "); scanf("%lf",&p); printf("\n请输入货物重量: "); scanf("%lf",&w); if(s<250.0){ d=0; f=cost(p,w,s,d); } elseif((s>=250.0)&&(s<500.0)){ d=0.05; f=cost(p,w,s,d); } elseif((s>=500.0)&&(s<1000.0)){ d=0.1; f=cost(p,w,s,d); } elseif((s>=1000.0)&&(s<2000.0)){ d=0.15; f=cost(p,w,s,d); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 练习题 答案