二级C语言课本课后习题参考答案.docx
《二级C语言课本课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《二级C语言课本课后习题参考答案.docx(60页珍藏版)》请在冰豆网上搜索。
二级C语言课本课后习题参考答案
二级C语言课本课后习题参考答案
第一章程序设计基本概念
**************************************************
(1)exe
(2)C,obj,exe
(3)顺序,选择,循环
***************EndofChapter1*******************
第二章C程序设计的初步知识
**************************************************
一、选择题
(1)B
(2)D(3)B(4)A(5)C
(6)A(7)B(8)B(9)A(10)C
(11)B(12)B(13)A
二、填空题
(14)11,12
(15)4.2,4.2
(16){,}说明,执行
(17)关键字,用户标识符
(18)int,float,double
(19)floata1=1,a2=1;
(20)存储单元
(21)3.5
(22)a*b/ca/c*ba*(b/c)
(23)10赋给变量s
(24)位,0或1
(25)8,255,11111111,0,00000000
(26)32767,-32768,1000000000000000
(27)十,八,十六
三、上机改错题
——————————————————————————————————————
(28)请指出以下C程序的错误所在
#includestdio.h;
main();/*mainfunction*/
floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/
r=5.0;
s=3.14159*r*r;
printf("%f\n",s);
※正确应为:
#include或#include"stdio.h"
main()/*mainfunction*/
{
floatr,s;/*risradius,sisareaofcircular*/
r=5.0;
s=3.14159*r*r;
printf("%f\n",s);
}
——————————————————————————————————————
(29)请指出以下C程序的错误所在
#includestdio.h
main/*mainfunction*/
{
floata,b,c,v;/*a,b,caresides,visvolumeofcube*/
a=2.0;b=3.0;c=4.0
v=a*b*c;
printf("%f\n",v);
}
※正确应为:
#include"stdio.h"
main()/*mainfunction*/
{
floata,b,c,v;/*a,b,caresides,visvolumeofcube*/
a=2.0;b=3.0;c=4.0;
v=a*b*c;
printf("%f\n",v);
}
***************EndofChapter2*******************
第三章顺序结构
**************************************************
一、选择题
(1)C
(2)C(3)D(4)C(5)D
(6)B(7)C(8)D(9)A(10)B
(11)C(12)D(13)D(14)A(15)C
(16)C(17)C(18)均不对,应为scanf(“%6f”,&c)(18)C(20)B
二、填空题
(21)①-200,2500②i=-200,j=2500③i=-200,j=2500
(22)12,0,0
(23)语句块,{;}
(24);
(25)100<空格>25.81<空格>1.89234/*可用一个或几个空格作为输入时的间隔符*/
10025.811.89234/*Tab(制表符)也可以作为输入时的间隔符*/
10025.811.89234/*CR(回车符)也可以作为输入时的间隔符*/
(26)x=127,x=ццц127,x=ццц177,x=цццц7f,x=ццц127。
(27)x=127,x=127ццц,x=177ццц,x=7fцццц,x=127ццц。
(28)a=513.789215,a=цц513.79,a=цц513.78921500,a=цц513.78921500
三、上机改错题
——————————————————————————————————————
3.30编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
※程序如下※
#include
main()
{
inthour,minute;
hour=560/60;
minute=560%60;
printf("hour=%d,minute=%d",hour,minute);
}
——————————————————————————————————————
3.31编写程序,输入两个整数:
1500和350,求出它们的商数和余数并进行输出。
※程序如下※
#include
main()
{
intnum1,num2,i,j;/*定义变量i-商,j-余数*/
printf("inputnum1andnum2:
\n");
scanf("%d%d",&num1,&num2);
i=num1/num2;
j=num1%num2;
printf("商=%d\n余数=%d",i,j);
}
——————————————————————————————————————
3.32编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
※程序如下※
#include
main()
{
doublea,b,c,average=0;
printf("inputa,b,c(double):
\n");
scanf("%lf%lf%lf",&a,&b,&c);
average=(a+b+c)/3;
average=average*10;
average=average+0.5;
average=(int)average;
average=average/10;
printf("average=%lf",average);
}
——————————————————————————————————————
3.33编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。
※程序如下※
#include
main()
{
inta,b,c,t=0;
printf("inputabc:
\n");
scanf("%d%d%d",&a,&b,&c);
t=c;c=b;b=a;a=t;
printf("a=%db=%dc=%d",a,b,c);
}
***************EndofChapter3*******************
第四章选择结构
**************************************************
一、选择题
(1)A
(2)A(3)A(4)D(5)C
(6)A(7)B(8)均错(9)D(10)A
二、填空题
(11)非零,零
(12)<或<=、>或>=、==、!
=
(13)逻辑非、逻辑与、逻辑或
(14)!
、<或<=、>或>=、==、!
=、&&、||
(15)!
(16)a==b||a4或x>4||x<-4
(17)1
(18)x>0?
0:
1,1
(19)a=3,b=2,c=2
(20)*#
三、编程题
——————————————————————————————————————
4.21当a>0时,请将以下语句改写成switch语句。
if(a<30)m=1;
elseif(a<40)m=2;
elseif(a<50)m=3;
elseif(a<60)m=4;
elsem=5;
※程序如下※
#include
main()
{
inta;
printf("Entera:
\n");
scanf("%d",&a);
switch(a/10)
{
case0:
case1:
case2:
printf("m=1");break;
case3:
printf("m=2");break;
case4:
printf("m=3");break;
case5:
printf("m=4");break;
default:
printf("m=5");
}
}
——————————————————————————————————————
4.22编写程序,输入一位学生的生日(年:
y0、月:
m0、日:
d0);并输入当前的日期(年:
y1、月:
m1、日:
d1);输出该生的实足年龄。
※程序如下※
#include
main()
{
inty0,y1,m0,m1,d0,d1,age=0;
printf("YourBirthday(yyyy-mm-dd):
\n");
scanf("%d-%d-%d",&y0,&m0,&d0);
printf("CurrentDate(yyyy-mm-dd):
\n");
scanf("%d-%d-%d",&y1,&m1,&d1);
if(d1BR>if(m1BR>age=y1-y0;
printf("\nAge=%d",age);
}
——————————————————————————————————————
4.23编写程序,输入一个整数,打印出它是奇数还是偶数。
※程序如下※
#include
main()
{
inti;
printf("inputainteger:
\n");
scanf("%d",&i);
if(i%2==0)/*条件判断*/
printf("%disaeven",i);
else
printf("%disaodd",i);
}
——————————————————————————————————————
4.24编写程序,输入a、b、c三个数,打印出最大者。
※程序如下※
#include
main()
{
inta,b,c,max=0;
printf("input(int)abandc:
\n");
scanf("%d%d%d",&a,&b,&c);
max=a;
if(maxBRmax="b;">if(maxBRmax="c;">printf("max=%d",max);
}
——————————————————————————————————————
4.25有一函数:
编写一程序,要求输入x的值,输出y的值。
分别
(1)不嵌套的if语句
(2)嵌套的if语句
(3)if_else语句(4)switch语句
※程序如下※
源程序一:
(1)不嵌套的if语句
#include
main()
{
floatx;
printf("inputx:
\n");
scanf("%f",&x);
if(x>-5&&x<0)
printf("y=%f",x);
if(x==0)
printf("y=%f",x-1);
if(x>0&&x<10)
printf("y=%f",x+1);
if(x<=-5||x>=10)
printf("inputerror");
}
源程序二:
(2)嵌套的if语句
#include
main()
{
floatx;
printf("inputx:
\n");
scanf("%f",&x);
if(x>-5&&x<10)
{
if(x==0)printf("y=%f",x-1);
if(x<0)printf("y=%f",x);
if(x>0)printf("y=%f",x+1);
}
if(x<=-5||x>=10)
printf("inputerror");
}
源程序三:
(3)if_else语句
#include
main()
{
floatx;
printf("inputx:
\n");
scanf("%f",&x);
if(x>-5&&x<10)
if(x<0)
printf("y=%f",x-1);
elseif(x==0)
printf("y=%f",x);
else
printf("y=%f",x+1);
else
printf("inputerror");
}
源程序四:
(4)switch语句
#include
main()
{
intflag;
floatx;
printf("Enterx:
\n");
scanf("%f",&x);
if(x>-5&&x<0)flag=-1;
if(x==0)flag=0;
if(x>0&&x<10)flag=1;
switch(flag)
{
case-1:
printf("y=%f",x);break;
case0:
printf("y=%f",x-1);break;
case1:
printf("y=%f",x+1);break;
}
}
***************EndofChapter4*******************
第五章循环结构
**************************************************
一、选择题
(1)D
(2)C(3)B(4)C(5)C
(6)B(7)D(8)A(9)D(10)D
二、填空题
(11)5,4,6
(12)有错
(13)-1
(14)11
(15)d=1.0,k++,k<=n
(16)x>=0,x
三、编程题
——————————————————————————————————————
5.17编写程序,求1-3+5-7+...-99+101的值。
※程序如下※
#include
main()
{
inti,sum=0,s=1;
for(i=1;i<=101;i+=2)
{
sum=sum+i*s;
s=-s;/*控制符号交替变换*/
}
printf("sum=%d",sum);
}
——————————————————————————————————————
5.18编写程序,求e的值,e=1+1/1!
+1/2!
+1/3!
+1/4!
+...+1/n!
(1)用for循环,计算前50项
(2)用while循环,要求直至最后一项的值小于1e-4。
※程序如下※
源程序一:
(1)用for循环实现
#include
main()
{
inti,n;
doublesum=1,t=1;
printf("inputn:
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=t*i;/*实现阶乘*/
sum=sum+1/t;
}
printf("e=%lf",sum);
}
源程序二:
(2)用while循环实现
#include
main()
{
inti;
doubelsum=1,t=1;
while(fabs(1.0/t)>1e-4)/*fabs求浮点型数据的绝对值*/
{
t=t*i;
sum=sum+1/t;
i++;
}
printf("e=%lf",sum);
}
——————————————————————————————————————
5.19编写程序,输出从公元1000年至2000年所有闰年的年号每输出3个年号换一行。
判断公元年是否闰年的条件是:
(1)公元年数如能被4整除,而不能被100整除,则是闰年。
(2)公元年数能被400整除也是闰年。
※程序如下※
#include
main()
{
inti,j=0;
for(i=1000;i<=2000;i++)
{
if((i%4==0)&&(i%100!
=0)||(i%400==0))/*判断是否是闰年的条件*/
{
printf("&d",i);
j++;
if(j%3==0)/*控制换行*/
printf("\n");
}
}
}
——————————————————————————————————————
5.20编写程序,打印以下图形:
*
***
*****
*******
*****
***
*
※程序如下※
#include
#include
main()
{
inti,j;
for(i=1;i<=7;i++)/*控制行数*/
{
for(j=1;j<=7;j++)/*控制星数*/
{
if((j<=abs(4-i))||(j>7-abs(4-i)))
printf("");
else
printf("*");
}
printf("\n");
}
}***************EndofChapter5*******************
第六章字符型数据
**************************************************
一、选择题
(1)B
(2)D(3)A(4)A(5)B
(6)D(7)D(8)B(9)A(10)A
(11)B(c)
二、填空题
(12)-1
(13)1
(14)ctype.h
(15)0
(16)10A20B30C40D
(17)7.29101.298↙AB↙(7.29↙101.298↙AB↙)
(18)A7.29B101.298↙
(19)AЦЦЦ↙BЦЦЦ↙C↙
三、编程题
——————————————————————————————————————
6.19请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三队.
※程序如下※
#include
main()
{
inti=0;
charch;
while((ch=getchar())!
='\n')
{
printf("%4c%4d",ch,ch);
i++;
if(i%3==0)
printf("\n");
}
}
——————————————————————————————————————
6.20请编写程序,输入一行数字字符(用EOF结束),每个数字字符的前后都有空格。
请编程,把这一行中的数字转换成一个整数。
例如,若输入:
2483(代表Enter键)
则输出整数:
2483
※程序如下※
#include
main()
{
charch;
while((ch=getchar())!
=EOF)
{
if(ch=='')
continue;
else
printf("%c",ch);
}
}
——————————————————————————————————————
6.21请编写程序统计输入的行数,输入用EOF结束输入。
※程序如下※
#include
main()
{
charch;
inti=0;
while((ch=getchar())!
=EOF)
{
if(ch=='\n')i++;
}
printf("%d",i);
}
——————————————————————————————————————
6.22请编写程序统计输入的一行中小写字母的个数。
※程序如下※
#include
main()
{
inti=0;
charch;
while((ch=getchar())!
='\n')
{
if((ch>='a')&&(ch<='z'))
i++;
}
printf("%d",i);
}
——————————————————————————————————————
6.23请编写输出以下图案的程序,图案的行数由输入的值确定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEEEE
※程序如下※
#include
main()
{
inti,j,k,n;
printf("Entern(integer):
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=n;j>i;j--)
printf("");
for(k=1;k<=2*i-1;k++)
printf("%c",64+i);
printf("\n");
}
}
***************EndofChapter6*******************
第七章函数
**************************************************
一、选择题
(1)C
(2)C(3)B(4)C(5)A
(6)D(7)A
二、填空题
(8)12
(9)9.000000
(10)4
(11)n=1,s
(12)z=1;i<=y,z=z*x
(13)1,s*i,0,f(k)
三、程序