C语言程序设计教程李含光郑关胜清华大学出版社习题答案习题答案完美打印版.docx
《C语言程序设计教程李含光郑关胜清华大学出版社习题答案习题答案完美打印版.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程李含光郑关胜清华大学出版社习题答案习题答案完美打印版.docx(38页珍藏版)》请在冰豆网上搜索。
C语言程序设计教程李含光郑关胜清华大学出版社习题答案习题答案完美打印版
第1章习题参考答案
1.单项选择题
(1)A
(2)C(3)D(4)C(5)B
2.填空题
(1)函数
(2)主函数(main)
(3)printf(),scanf()
第2章习题参考答案
1.单项选择题
1-5CBCCC6-10CDCDC11-13DBB
2.填空题
(1)1
(2)26(3)6,4,2(4)10,6(5)3.000000
(6)双精度(double)(7)9(8)字母,数字,下划线(9)13.700000
(10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0
(13)10,9,11(15)(x<0&&y<0)||(x<0&&z<0)||(y<0||z<0)(16)double
(17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))
第3章习题参考答案
1.单项选择题
1-5CCCDD6-10BCDBC11-15BCBBB16A
2.填空题
(1)用;表示结束
(2){}(3)y=x<0?
1:
x==0?
0:
-1
(4)y%4==0&&y%100!
=0||y%400==0(5)上面未配对(6)default标号
(7)while,dowhile,for(8)dowhile(9)本次(10)本层
3.阅读程序,指出结果
(1)yes
(2)*&(3)ABother(4)2870(5)2,0(6)8(7)36
(8)1(9)3,1,-1,3,1,-1(10)a=12,y=12(11)i=6,k=4
(12)1,-2
4.程序填空
(1)x:
y,u:
z
(2)m=n,m!
=0,m=m/10
(3)t(4)m%5==0,printf(“%d\n”,k)
(5)cx=getchar(),cx!
=front,cx
(6)doubles=0,1.0/k,%lf
(7)s>=0,s5.编程题
(1).
#include
intmain()
{
doublex,y;
scanf("%lf",&x);
if(x<1)
y=x;
elseif(x>=1.0&&x<10)
y=2*x-11;
else
y=3*x-11;
printf("%lf\n",y);
return0;
}
(2).
#include
intmain()
{
doublex,y,z,min;
scanf("%lf%lf%lf",&x,&y,&z);
if(x>y)
min=y;
else
min=x;
if(min>z)
min=z;
printf("min=%lf\n",min);
return0;
}
(3).
#include
intmain()
{
inty,m,d,flag,s=0,w,i;
scanf("%d%d%d",&y,&m,&d);
flag=(y%4==0&&y%100!
=0||y%400==0);
w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;
for(i=1;i<=m;i++)
{
switch(i)
{
case1:
s=d;break;
case2:
s=31+d;break;
case3:
s=59+d;break;
case4:
s=90+d;break;
case5:
s=120+d;break;
case6:
s=151+d;break;
case7:
s=181+d;break;
case8:
s=212+d;break;
case9:
s=243+d;break;
case10:
s=273+d;break;
case11:
s=304+d;break;
case12:
s=334+d;break;
}
}
if(flag==1&&m>2)
s=s+1;
s=(w+s)%7;
if(s==0)
printf("星期日\n");
else
printf("星期%d\n",s);
return0;
}
(4).
#include
intmain()
{
floatp,r;
scanf("%f",&p);
if(p<=10)
r=p*0.1;
elseif(p>10&&p<=20)
r=10*0.1+(p-10)*0.075;
elseif(p>20&&p<=40)
r=10*0.1+10*0.075+(p-20)*0.05;
elseif(p>40&&p<=60)
r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;
elseif(p>60&&p<=100)
r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015;
elseif(p>100)
r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01;
printf("%f\n",r);
return0;
}
(5).
#include
intmain()
{
charc;
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z')
c=c-32;
putchar(c);
}
return0;
}
(6).
#include
intmain()
{
intm,k=2;
printf("输入一个正整数:
\n");
scanf("%d",&m);
while(kif(m%k==0)
{
printf("%4d",k);
m=m/k;
}
else
k++;
printf("%4d\n",m);
return0;
}
(7).
#include
intmain()
{
inta,n,s=0,p=0,i;
scanf("%d%d",&n,&a);
for(i=1;i<=n;i++)
{
p=p*10+a;
s=s+p;
}
printf("%d\n",s);
return0;
}
(8).
#include
intmain()
{
inti,j,k;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
printf("%5d",100*i+10*j+k);
return0;
}
(9).
#include
#include
intmain()
{
floata=-10,b=10,x,f1,f2,f;
f1=(((2*a-4)*a+3)*a)-6;
f2=(((2*b-4)*b+3)*b)-6;
do
{
x=(a+b)/2;
f=(((2*x-4)*x+3)*x)-6;
if(f*f1<0)
{
b=x;
f2=f;
}
else
{
a=x;
f1=f;
}
}while(fabs(f)>=1e-6);
printf("%6.2f\n",x);
return0;
}
(10).
#include
#include
intmain()
{
intn=2;
doubleeps,t,s=0,x;
scanf("%lf%lf",&x,&eps);
t=x;
s=t;
while(fabs(t)>=eps)
{
t=-t*(2*n-3)*x*x/(2*n-2);
s=s+t/(2*n);
n++;
}
printf("%d,%lf\n",n,s);
return0;
}
(11).
#include
intmain()
{
unsignedlongs,t=0,p=1;
scanf("%u",&s);
while(s!
=0)
{
if((s%10)%2!
=0)
{
t=t+(s%10)*p;
p=p*10;
}
s=s/10;
}
printf("%u\n",t);
return0;
}
第4章习题参考答案
1.单项选择题
1-5DDDBD6-10BADCD11-14BDAB
2.填空题
(1)2
(2)嵌套,递归
(3)全局变量,局部变量,静态变量,动态变量
(4)auto,static,register,extern
(5)外部变量(6)编译,运行
3.阅读程序,指出结果
(1)15
(2)5(3)5,4,3
(4)i=5
i=2
i=2
i=4
i=2
(5)求水仙花数(6)-5*5*5(7)30
(8)010
111
212
4.程序填空
(1)floatfun(float,float),x+y,x-y,z+y,z-y
(2)x,x*x+1
(3)s=0,a=a+b
5.编程题
(1).
#include
unsignedintfun(unsignedint);
intmain()
{
unsignedints;
scanf("%u",&s);
printf("%u\n",fun(s));
return0;
}
unsignedintfun(unsignedints)
{
unsignedintp=0;
while(s!
=0)
{
p=p+s%10;
s=s/10;
}
returnp;
}
(2).
#include
#include
#include
voidf1(float,float,float,float);
voidf2(float,float,float,float);
voidf3(float,float,float,float);intmain()
{
floata,b,c,d;
scanf("%f%f%f",&a,&b,&c);
if(a==0)
{
printf("不是一元二次方程\n");
exit(0);
}
d=b*b-4*a*c;
if(d>0)
f1(a,b,c,d);
elseif(d==0)
f2(a,b,c,d);
else
f3(a,b,c,d);
return0;
}
voidf1(floata,floatb,floatc,floatd){
floatx1,x2;
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("%.2f,%.2f\n",x1,x2);
}
}
voidf2(floata,floatb,floatc,floatd){
floatx1,x2;
{
x1=-b/(2*a);
x2=-b/(2*a);
printf("%.2f,%.2f\n",x1,x2);
}
}
voidf3(floata,floatb,floatc,floatd){
floatx1,x2;
{
x1=-b/(2*a);
x2=sqrt(-d)/(2*a);
printf("%.2f+i*%.2f\n",x1,x2);
printf("%.2f-i*%.2f\n",x1,x2);
}
}
(3).
#include
doublep(int,double);
intmain()
{
intn;
doublex;
do
{
scanf("%d",&n);
}while(n<0);
scanf("%lf",&x);
printf("%lf\n",p(n,x));
return0;
}
doublep(intn,doublex)
{
doublepn;
if(n==0)
pn=1;
elseif(n==1)
pn=x;
else
pn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
returnpn;
}
(4).
#include
#defineRATE0.053
doublefun(float);
voiddisplay(float,int);
intmain()
{
floatdep;
intseason;
scanf("%f%d",&dep,&season);
display(dep,season);
return0;
}
doublefun(floatd)
{
returnd*RATE;
}
voiddisplay(floatd,ints)
{
inti;
printf("季度利余额\n");printf("-------------------------------\n");
for(i=1;i<=s;i++)
{
printf("%-4d%-.2f%-.2f\n",i,fun(d),fun(d)*i+d);
printf("-------------------------------\n");
}
}
(5).
#include
doublefun(void);
intmain()
{
printf("%lf\n",fun());
return0;
}
doublefun(void)
{
doubles=0;
intn=1;
while((double)(2*n-1)/((2*n)*(2*n))>1e-4)
{
s=s+(double)(2*n-1)/((2*n)*(2*n));
n++;
}
returns;
}
(6).
#include
intfun(int);
intmain()
{
intw;
scanf("%d",&w);
printf("%d\n",fun(w));
return0;
}
intfun(intw)
{
intn=1,p=1,m;
m=w;
while(m>10)
{
m=m/10;
p=p*10;
n++;
}
returnw%p;
}
第5章习题参考答案
1、选择题:
1-5C(BC)BBA6-8DDB
2、填空题
(1)0,9
(2)floatrealArray[100],charstrArray[16],intintArray[1000]
(3)运算符sizeof(4)6字节
3、阅读程序,写出下面程序的运行结果
(1)aa
bb
ccdd
(2)ab
c
d
(3)ahAMa(4)0010(5)1345
(6)Thisisthetitle.
Name1isRosalinda
Name2isZeke
ThebiggestnamealpabeticallyisZeke
BothnamesareRosalindaZeke
(7)00000000
01234567
025681074814
036912151821
0481216202428
051015201773035
06121824303642
07142128354249
4、程序填空
(1)a[i][j]!
=a[j][i],1
(2)0,a[i](3)inta[],intb[],b[i]=a[i],-999,arraycopy(a,b),b[i++]
(4)a5、编程题
(1)
#include
intmain(){
1inta[3][4]={0,2,9,7,
5,13,6,8,
27,11,1,3
};
inti,j,temp;
for(i=0,j=0;j<4;j++){
temp=a[2-i][j];
a[2-i][j]=a[i][j];
a[i][j]=temp;
}
for(i=0;i<3;i++){
for(j=0;j<4;j++)
printf("%3d",a[i][j]);
printf("\n");
}
return0;
}
(2)
#include
intmain(){
staticinta[6][6];
inti,j,t=1;
for(i=0;i<6;i++){
t=i+1;
for(j=0;j
a[i][j]=t--;
}
for(i=0;i<6;i++){
for(j=0;j<6;j++)
printf("%3d",a[i][j]);
printf("\n");
}
return0;
}
(3)
#include
#defineM3
#defineN4
#defineR5
intmain(){
staticinta[M][N],b[N][R],c[M][R];
inti,j,k;
2printf("Matrixa:
\n");
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
printf("Matrixb:
\n");
for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);
for(i=0;ifor(j=0;jfor(k=0;kc[i][k]+=a[i][j]*b[j][k];
for(i=0;ifor(j=0;jprintf("%3d",c[i][j]);
printf("\n");
}
return0;
}
(4)
#include
#defineM5
intmain(){
staticinta[M];
inti,max=-1,min=100,maxi,mini,temp;
for(i=0;iscanf("%d",&a[i]);//0~99间的值
for(i=0;iif(maxmax=a[i];
maxi=i;
}
if(min>a[i]){
min=a[i];
mini=i;
}
}
temp=a[maxi];
a[maxi]=a[mini];
a[mini]=temp;
for(i=0;iprintf("%3d",a[i]);
return0;
}
3(5)
#include
#defineM3
#defineN4
intmain(){
staticinta[M][N];
intmax=-1,sumcol=0,sumrow=0;
inti,j,maxi,col;
for(i=0;isumrow=0;
for(j=0;jscanf("%d",&a[i][j]);
sumrow+=a[i][j];
}
if(maxmax=sumrow;
maxi=i;
}
}
printf("whichcolsumwillbecaculated?
(>0)");
scanf("%d",&col);
for(i=0;isumcol+=a[i][col-1];
printf("The%dthrow'ssumismax,max=%d\n",maxi+1,max);
printf("The%dthcolumn'ssum=%d\n",col,sumcol);
return0;
}
(6)
#include
#defineM81
intmain(){
staticcharstr[M];
inti,count=0;
charch;
gets(str);
fflush(stdin);//清空输入缓冲区,以便读入字符数据
printf("Whichcharacterwillbefound?
");
ch=getchar();
for(i=0;iif(ch==str[i])
count++;
printf("Thenumberofcharacter'%c'is%d\n",ch,count);
4return0;
}
(7)
#include
#include
#defineN10//同学人数
#defineM5//课程数
voidenter_scores