完整版全国计算机等级考试二级教程C语言程序设计课后习题答案.docx
《完整版全国计算机等级考试二级教程C语言程序设计课后习题答案.docx》由会员分享,可在线阅读,更多相关《完整版全国计算机等级考试二级教程C语言程序设计课后习题答案.docx(45页珍藏版)》请在冰点文库上搜索。
![完整版全国计算机等级考试二级教程C语言程序设计课后习题答案.docx](https://file1.bingdoc.com/fileroot1/2023-6/1/40ce2cbe-95f5-421d-92d1-3b65851a2abc/40ce2cbe-95f5-421d-92d1-3b65851a2abc1.gif)
完整版全国计算机等级考试二级教程C语言程序设计课后习题答案
全国计算机等级考试二级教程--C语言程序设计》课后习题答案
第一章
1.1EXE
1.2COBJEXE
1.3顺序选择循环
第二章
1.选择题
2.1B2.2D2.3B2.4A2.5C2.6A2.7B
2.8B2.9D2.10C2.11B2.12B2.13A
2.填空题
2.141112
2.154.24.2
2.16{}定义执行语句
2.17关键字用户标识符
2.18intfloatdouble
2.19floata1=1;floata2=1;
2.20存储单元
2.213.5
2.22(a*b)/ca*b/ca/c*b
2.23把常量10赋给变量s
2.24位1或0
2.2581270111111-12810000000
2.2632767-327681000000000000000
2.2710816
3.上机改错题
2.28
#include"stdio.h";删除行尾的";"
*要紧靠“/”,即应为“/*”和“*/
注释符号不可嵌套使用
main();/*mainfunction*/删除")"后的";",注释中的
函数开始处遗失了一个“{”
floatr,s;/*/*risradius*/,/*sisareaofcircuilar*/*/
r=5.0;
s=3.14159*r*r;
printf("%f\n",s)行尾遗失了“;”函数结束处遗失了一个“}”
2.29
#include"stdio.h"
main/*mainfunction*/main后遗失了“()”
{
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)行尾遗失了“;”
}
第三章
一.选择题
3.1C3.2C3.3D3.4C3.5D3.6B3.7C3.8D3.9A3.10B
3.11C3.12D3.13D3.14A3.15C3.16C3.17C3.18无答案3.19C3.20B
二.填空题
3.21
(1)-2002500
(2)i=-200,j=2500
(3)i=-200
j=2500
3.221200
3.23一条语句;
3.24;
3.25100,25.81,1.8923410025.811.8923410025.811.89234
3.26x=127,x=127,x=177,x=7f,x=127
3.27x=127,x=127,x=$127,x=$000127,x=%06d
3.28a=513.789215,a=513.79,a=513.78921500,a=513.78921500
三.编程题和改错题
3.29修改后的程序如下:
main()
{
doublea,b,c,s,v;printf("inputa,b,c:
");scanf("%lf%lf%lf",&a,&b,&c);s=a*b;
v=a*b*c;printf("a=%f,b=%f,c=%f\n",a,b,c);printf("s=%f,v=%f\n",s,v);
}
3.30
#include
main()
{
inta=560,b=60;
printf("560minuteis%dhourand%dminute.\n",a/b,a%b);}
3.31
#include
main()
{
inta,b;a=1500;b=350;
printf("adivbis:
%d\n",a/b);printf("amodbis:
%d\n",a%b);
}
3.32
#includemain(){doublea,b,c,ave;
printf("input3doublenumber:
\n");scanf("%lf%lf%lf",&a,&b,&c);
printf("%.1f\n",(a+b+c)/3);
}
3.33
#include
voidmain()
{
inta,b,c,t;printf("请依次输入整数a,b,c:
");scanf("%d%d%d",&a,&b,&c);
printf("\n你输入的值是:
a=%d,b=%d,c=%d\n",a,b,c);t=b;b=a;a=c;c=t;
printf("交换之后的值是:
a=%d,b=%d,c=%d\n",a,b,c);}
第四章
一.选择题
4.1A4.2A4.3A4.4D4.5C4.6A4.7B4.8C4.9D4.10C二.填空题
4.11非00
4.12<>>=<=同级==!
=同级
4.13!
&&||
4.15!
4.16a==b||a4||x<-4
4.171
4.18x<=01>0
4.19322
4.20*#
三.编程题
4.21略
4.22
#include/*检查日期的合法性*/
intcheckdate(intyear,intmonth,intday)
{
if(year<1900||year>2005)
{
printf("输入的年份无效!
\n");return0;
}
elseif(month<0&&month>12)
{
printf("输入的月份无效!
\n");return0;
}
elseif(day<=0&&day>31)
{
printf("输入的日期无效!
\n");return0;
}
else
{
switch(month)
{
case4:
case6:
case9:
case11:
if(day>30)
{
printf("输入的日期无效!
\n");return0;
}
break;
case2:
if((year%4==0&&year%100!
=0)||year%400==0){
if(day>29)
{
printf("输入的日期无效!
\n");return0;
}
}
else
{
if(day>28)
{
printf("输入的出生日期无效!
\n");
return0;
}
}
break;
}/*endofswitch(m0)*/
}
return1;
}
voidmain()
{
inty0,m0,d0;/*生日*/
inty1,m1,d1;/*当前日期*/
intyears,months,days;/*实足年龄*/
printf("请输入学生的生日:
");scanf("%d%d%d",&y0,&m0,&d0);
if(checkdate(y0,m0,d0))
{
printf("请输入当前日期:
");scanf("%d%d%d",&y1,&m1,&d1);
/*当前日期合法性检查*/
if(!
checkdate(y1,m1,d1))
{
return;
}
elseif(y0>y1)
{
printf("出生年份比当前年份晚!
\n");
return;
}
elseif(y0==y1)
{
if(m0>m1)
{
printf("出生年月比当前年月晚!
\n");
return;
}
elseif(m0==m1)
{
if(d0>d1)
{
printf("出生年月日比当前年月日晚!
\n");
return;
}
}
}
}
/*计算实足年龄*/years=y1-y0;months=m1-m0;days=d1-d0;
/*修正实足年龄天数*/if(days<0)
{months--;
switch(m1)
{
case1:
case5:
case7:
case10:
case12:
days+=30;break;
case2:
case4:
case6:
case8:
case9:
case11:
days+=31;break;
case3:
if((y1%4==0&&y1%100!
=0)||y1%400==0){
days+=29;
}else{days+=28;
}
break;
}/*endofswitch(m1)*/
}/*endofif(days<0)*/
/*修正实足年龄月数*/if(months<0)
{
months+=12;
years--;
}/*endofif(months<0)*/printf("出生日期:
%d年%d月%d日\n",y0,m0,d0);
printf("当前日期:
%d年%d月%d日\n",y1,m1,d1);
printf("实足年龄:
%d年%d月%d日\n",years,months,days);
return;
}
4.23
#include
voidmain()
{
inta;
printf("请输入一个整数:
");
scanf("%d",&a);
if(a%2==0)
{
printf("%d是偶数\n",a);
}
else
{
printf("%d是奇数\n",a);
}
}
4.24
#include
voidmain()
{
inta,b,c,temp,max;
printf("请输入三个整数:
");scanf("%d%d%d",&a,&b,&c);temp=(a>b)?
a:
b;max=(temp>c)?
temp:
c;
printf("\n");
%d.\n",max);
printf("你输入的数中最大的是}
4.25
(1)不嵌套的if语句
#include
voidmain()
{
intx,y;
printf("inputx:
");scanf("%d",&x);
if(x>-5&&x<0)
{
printf("yis%d\n",y=x);
}
if(x==0)
{
printf("yis%d\n",y=x-1);
}
if(x>0&&x<10)
{
printf("yis%d\n",y=x+1);
}
if(x>=10||x<=-5)
{
printf("error\n");
}
}
(2)嵌套的if语句
#include
voidmain()
{
intx,y;printf("inputx:
");scanf("%d",&x);
printf("\n");
if(x<0)
{
if(x>-5)
{
printf("yis%d.\n",y=x);
}
else
{
printf("error!
\n");
}
}
if(0==x)
{
printf("yis%d.\n",y=x-1);
}
if(x>0)
{
if(x<10)
{
printf("yis%d.\n",y=x+1);
}
else
{
printf("error!
\n");
}
}
}
(3)if_else语句
#include
voidmain()
{
intx,y;
printf("inputx:
");
scanf("%d",&x);
if(x>-5&&x<0)
{
printf("yis%d.\n",y=x);
}
elseif(x==0)
{
printf("yis%d.\n",y=x-1);
}
elseif(x>0&&x<10)
{
printf("yis%d.\n",y=x+1);}
else
{
printf("error!
\n");
}
}
(4)switch语句
#include
voidmain()
{
intx,y;printf("inputx:
");scanf("%d",&x);
switch(x)
{
case-4:
case-3:
case-2:
case-1:
printf("yis%d.\n",y=x);break;
case0:
printf("yis%d.\n",y=x-1);break;
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
printf("yis%d.\n",y=x+1);break;
default:
printf("error!
\n");
}
}
第五章
选择题
5.1D5.2C5.3B5.4C5.5C5.6B5.7D5.8A5.9D5.10D二.填空题
5.11546
5.12死循环
5.13-1
5.1411
5.15d=1.0k++k<=n
5.16x>=0x
三.编程题
5.17
#include
voidmain()
{
inti;
intsig=1;
intsum=0;
for(i=1;i<=101;i++,i++)
{
sum+=sig*i;
sig*=-1;
}
printf("sum=%d\n",sum);
}
5.18
(1)
#include
voidmain()
{
inti;
doublem=1.0;
doublee=1.0;
for(i=1;i<50;i++)
{
m*=i;
e+=1/m;
}
printf("e=%f\n",e);
}
(2)
#includevoidmain()
{inti=1;
doublem=1.0;
doublee=1.0;while(1/m>=0.0004)
{m*=i;
e+=1/m;i++;
}printf("e=%f\n",e);
}
5.19
#include
voidmain()
{intyear;
intcol=0;
for(year=1600;year<=2000;year++)
{
if((year%4==0&&year%100!
=0)||year%400==0){
printf("%d\t",year);col++;
if(col%5==0)
{printf("\n");
}
}
}printf("\n");
}
5.20#include#defineN7voidmain()
{
inti;
intj;
intm;
intk=N/2;
for(i=0;i{
m=i-k;
if(m<0)
{
m*=-1;
}
for(j=0;j{printf("");
}
for(j=0;j<2*(k-m)+1;j++)
{printf("*");
}
printf("\n");
}
}
第六章一.选择题
6.1B6.2D6.3A6.4A6.5B6.6D6.7D6.8B6.9A6.10A6.11C二.填空题
6.12-1
6.131
6.14ctype.h
6.151
6.1610A20B30C40D
6.177.29101.298AB
6.18A7.29B101.298
6.19ABC(每个字符后有三个空格)
三.编程题
6.20
#include
#defineN80
voidmain()
{charstr[N];intiLoop=0;gets(str);while(str[iLoop]){printf("%c-%d\t",str[iLoop],str[iLoop]);iLoop++;
if(iLoop%3==0){
printf("\n");
}}printf("\n");
}
6.21#include#defineN80
voidmain()
{charstr[N];
intnum=0;intiLoop=0;gets(str);
while(str[iLoop])
{
if(str[iLoop]>='0'&&str[iLoop]<='9'){
num=10*num+(str[iLoop]-'0');
}iLoop++;
}printf("%d\n",num);
}
6.22#include#include
#defineN80
voidmain(){charstr[N];
intnum=-1;
do
{
gets(str);
num++;
}while(strcmp(str,"EOF"));
printf("您输入了%d行字符!
\n",num);
}
6.23
#include
#defineN80
voidmain()
{
charstr[N];
intiLoop=0;
intnum=0;
gets(str);
while(str[iLoop]&&iLoop{
if(str[iLoop]>='a'&&str[iLoop]<='z')
{
num++;
}
iLoop++;
}
printf("您输入了字符中有%d个小写字母!
\n",num);}
6.24
#include
voidmain()
{
intline;
intiLoop1;
intiLoop2;
printf("请输入图案的行数(不大于26):
");scanf("%d",&line);
for(iLoop1=0;iLoop1{
for(iLoop2=0;iLoop2{printf("");
}
for(iLoop2=0;iLoop2<2*iLoop1+1;iLoop2++){
printf("%c",iLoop1+'A');
}printf("\n");
}
}
第七章
一.选择题
7.1C7.2C7.3B7.4C7.5A7.6D7.7A
二.填空题
7.812
7.99.000000
7.104
7.11n=1s
7.12<=yz*x
7.131s*i0f(k)
三.程序调试和编程题
7.14fun(intn){intk,yes;
for(k=2;k<=n/2;k++)
{
if(n%k==0){yes=0;break;}elseyes=1;
}returnyes;
}
7.15
intmymod(inta,intb)
{returna%b;
}
7.16doublefun(intn){
doublesum=0;
intiLoop;
intsig=-1;
for(iLoop=1;iLoop<=n;iLoop++){sig*=-1;
sum+=sig*1.0/iLoop;
}
returnsum;
}
7.17doublefun(intn){doublet=1.0;intiLoop;longtmp;
for(iLoop=2;iLoop<=n;iLoop++){
tmp=iLoop*iLoop;
t-=1.0/tmp;
}returnt;
}
7.18
#include
#include
doublefun(doublex)
{
returnx*x+5*x+4;
}
voidmain()
{
intx=2;
printf("y1=%f\n",fun(x));printf("y2=%f\n",fun(x+15));printf("y3=%f\n",fun(sin(x)));
}第八章
一.选择题
8.1A8.2B8.3B8.4C8.5B8.6B8.7C8.8D8.9B8.10C8.11C8.12C二.填空题
8.13110
8.1471
8.15
(1)char*p=&ch;
(2)p=&ch;(3)scanf("%c",p);(4)*p='A';(5)printf("%c",*p);
8.16
(1)s=p+3;
(2)s=s-2(3)50(4)*(s+1)(5)2(6)1020304050
三.编程题
8.17
voidfun(doublex,doubley,double*sum,double*div)
{
*sum=x+y;
*div=x-y;
return;
}
8.18
voidfun(doublex,doubley,doublez,double*max,double*min)
{
*max=x;
*min=x;
if(*max{
*max=y;
}
if(*max{
*max=z;
}
if(*min>y)
{
*min=y;
}
if(*min>z)
{
*min=z;
}
return;
}
第九章
一.选择题
9.1D9.2A9.3A9.4C9.5C9.6A9.7B9.8D9.9C9.10C
9.11C9.12D9.13D9.14A9.15A9.16A9