C语言课后答案谭浩强清华大学出版社.docx
《C语言课后答案谭浩强清华大学出版社.docx》由会员分享,可在线阅读,更多相关《C语言课后答案谭浩强清华大学出版社.docx(29页珍藏版)》请在冰豆网上搜索。
C语言课后答案谭浩强清华大学出版社
第一章
1.3写出一个C程序的构成。
一个C程序可以由若干个源程序文件(分别进行编译的文件模块)组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成,一个函数由数据声明部分和执行语句组成。
1.5
#include
voidmain()
{
printf("********************");
printf("\n");
printf("VeryGood!
");
printf("\n");
printf("********************");
scanf("%d");
}
1.6编写一个C程序,输入a,b,c三个值,输出其中最大值。
#include
voidmain()
{
inta,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
if(a
{
max=b;
b=a;
a=max;
}
if(a{
max=c;
c=a;
a=max;
}
printf("%d\n",a);
}
第三章
3.5字符常量和字符串常量有什么区别?
答:
字符常量是一个字符,在程序中字符是用单引号括起来的。
字符串常量有0个或若干个字符组合而成,在程序中字符串是用双引号括起来的,在储存时系统自动在字符串最后面加一个结束符号’\0’。
3.6写出下列程序的运行结果:
aa︼bb︼︼︼cc︼︼︼︼︼︼abc
︼︼︼︼︼︼︼A︼N
3.7
#include
voidmain()
{
charc1,c2,c3,c4,c5;
c1='C';
c2='h';
c3='i';
c4='n';
c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
}
3.9求下面算术表达式的值。
(1)2.5
(2)3.5
3.10
9,11,9,10
3.12
(1)24
(2)10
(3)60
(4)0
(5)0
(6)0
第四章
4.4
#include
voidmain()
{
inta,b,c;
floatx,y,z;
longu,n;
charc1,c2;
a=3;
b=4;
c=5;
x=1.2;
y=2.4;
z=-3.6;
u=51274;
n=128765;
c1='a';
c2='b';
printf("a=%2db=%2dc=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);
printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ldn=%9ld\n",u,n);
printf("c1='%c'or%d(ASCII)\n",c1,c1);
printf("c2='%c'or%d(ASCII)\n",c2-32,c2);
}
4.5请写出程序的输出结果:
57
57
67.856400,-789.124023
67.856400,-789.124023
67.86,-789.12,67.856400,-789.124023,67.856400,-789.124023
6.785640e+01,-7.89e+02
A,65,101,41
1234567,4553207,d687
65533,177777,ffff,-1
COMPUTER,COM
4.6
a=3︼b=7
︼8.5︼71.82
︼A︼a
4.7
︼︼︼10︼︼︼20Aa1.5︼-3.75︼1︼67.8
4.8
#include
voidmain()
{
floatr,h,a,b,c,d,e;
floatp=3.141592653;
scanf("r=%fh=%f",&r,&h);
a=2*p*r;
b=p*r*r;
c=4*p*r*r;
d=(3.0/4.0)*p*r*r*r;
e=p*r*r*h;
printf("yuanzhouchang:
a=%.2f\n",a);
printf("yuanmianji:
b=%.2f\n",b);
printf("yuanqiubiaomianji:
c=%.2f\n",c);
printf("yuanqiutiji:
d=%.2f\n",d);
printf("yuanzhutiji:
e=%.2f\n",e);
}
4.10
(1)
#include
voidmain()
{
charc1,c2;
printf("pleaseprintc1,c2:
");
c1=getchar();
c2=getchar();
printf("useputchartoprinttheresult:
");
putchar(c1);
putchar(c2);
printf("\n");
printf("useprintfprinttheresult:
");
printf("%c%c\n",c1,c2);
}
c1和c2可以定义为字符型或整型,二者皆可。
(2)
要使程序结果输出c1和c2的ASCII码,要在printf函数中用%d格式符输出,即:
printf("%d%d\n",c1,c2);
(3)字符变量在计算机内占用一个字节,而整型变量占用两个字节。
因此整型变量在可输出字符的范围内(ASCII码为0~255之间的字符)是可以与字符数据互相转换的。
如果整数在此范围外,则不能替代。
第五章习题
5.3
#include
voidmain()
{
inta,b,c,x,y;
a=3;
b=4;
c=5;
printf("%d\n",a+b>c&&b==c);
printf("%d\n",a||b+c&&b-c);
printf("%d\n",!
(a>b)&&!
c||1);
printf("%d\n",!
(x=a)&&(y=b)&&0);
printf("%d\n",!
(a+b)+c-1&&b+c/2);
}
5.4
#include
voidmain()
{
inta,b,c;
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(bprintf("max=%d\n",c);
else
printf("max=%d\n",b);
elseif(aprintf("max=%d\n",c);
else
printf("max=%d\n",a);
}
5.5
#include
voidmain()
{
intx,y;
scanf("%d",&x);
if(x<1)
y=x;
else
if(x>=10)y=3*x-11;
elsey=2*x-1;
printf("x=%d,y=%d\n",x,y);
}
5.6
#include
voidmain()
{
floatscore;
chargrade;
printf("student'sscoreis:
");
scanf("%f",&score);
switch((int)(score/10))
{
case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
default:
grade='E';
}
printf("gradeis%c\n",grade);
}
5.9
#include
voidmain()
{
inta,b,c,d,t;
printf("pleaseprintfournumbers:
");
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf("theorderis:
%d%d%d%d\n",a,b,c,d);
}
第六章习题
6.1
#include
voidmain()
{
intm,n,t,s,i;
scanf("m=%dn=%d",&m,&n);
if(m>n)
{t=m;m=n;n=t;}
s=m*n;
while(m!
=0)
{i=n%m;n=m;m=i;}
printf("highestcommondivissor=%d\n",n);
printf("leastcommonmultiple=%d\n",s/n);
}
6.4
#include
voidmain()
{
intn;
floats,i;
s=0;i=1;
for(n=1;n<=20;n++)
{i=i*n;s=s+i;}
printf("%.1f\n",s);
}
6.6
#include
voidmain()
{
intn,a,b,c;
for(n=100;n<1000;n++)
{
a=n/100;
b=n/10-a*10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)
printf("%d",n);
}
printf("\n");
}
6.8
#include
voidmain()
{
inti,t;
floata,b,c;
a=1;b=2;c=0;
for(i=1;i<=20;i++)
{
c=c+b/a;
t=b;
b=a+b;
a=t;
}
printf("%f\n",c);
}
6.11
#include
#include
voidmain()
{
floata,x0,x1;
printf("thenumberis:
");
scanf("%f",&a);
x0=a;
x1=(x0+a/x0)/2;
while(fabs(x0-x1)>=1e-5)
{
x0=x1;
x1=(x0+a/x0)/2;
}
printf("thesquarerootof%.0fis:
%f\n",a,x1);
}
6.14
#include
voidmain()
{
inti,j,n;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
printf("");
for(n=0;n<=2*i;n++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf("");
for(n=0;n<=4-2*i;n++)
printf("*");
printf("\n");
}
}
第七章习题
7.2
#include
voidmain()
{
inti,j,min,t,a[11];
for(i=1;i<=10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for(i=1;i<=9;i++)
{
min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j])min=j;
t=a[i];a[i]=a[min];a[min]=t;
}
printf("\nThesortednumbers:
\n");
for(i=1;i<=10;i++)printf("%5d",a[i]);
}
7.4
#include
voidmain()
{
inta[5]={2,4,6,8};
intnum,i,j;
printf("arraya:
\n");
for(i=0;i<4;i++)
printf("%5d",a[i]);
printf("\n");
printf("enterdatais:
");
scanf("%d",&num);
if(num>a[3])
a[4]=num;
else
{for(i=0;i<4;i++)
if(a[i]>num)
{for(j=3;j>=i;j--)
a[j+1]=a[j];
a[i]=num;
break;
}
}
printf("newarraya:
\n");
for(i=0;i<5;i++)
printf("%5d",a[i]);
printf("\n");
}
7.5
#include
voidmain()
{
inti,j,a[5];
printf("enterarraya:
\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("arraya:
\n");
for(i=0;i<5;i++)
printf("%5d",a[i]);
printf("\n");
for(i=0;i<5/2;i++)
{
j=a[i];a[i]=a[4-i];a[4-i]=j;
}
printf("newarraya:
\n");
for(i=0;i<5;i++)
printf("%5d",a[i]);
printf("\n");
}
7.6
#include
voidmain()
{
inti,j,a[11][11];
for(i=1;i<11;i++)
{
a[i][1]=1;a[i][i]=1;
}
for(i=3;i<11;i++)
{
for(j=2;j<11;j++)
{a[i][j]=a[i-1][j-1]+a[i-1][j];}
}
for(i=1;i<11;i++)
{for(j=1;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");}
}
7.9
#include
#defineN15
main()
{
inti,j,number,mid,top,bott,loca,flag=1,sign=1;
staticinta[N]={14,23,35,37,49,51,63,75,77,79,81,83,95,97,100};
intc;
printf("\n");
for(i=0;iprintf("%5d",a[i]);
printf("\n");
while(flag)
{
printf("insertnumbertolookfor:
");
scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((numbera[N-1]))
loca=-1;
while((sign==1)&&(top<=bott))
{
mid=(bott+top)/2;
if(number==a[mid])
{
loca=mid;sign=0;
printf("find%d,itspositionis%d\n",number,loca+1);
}
else
if(numberbott=mid-1;
else
top=mid+1;
}
if((sign==1)||(loca==-1))
printf("%disnotfound.\n",number);
printf("continueornot(1/2)?
");
scanf("%d",&c);
if(c==2)
flag=0;
sign=1;
printf("\n");
}
}
7.10
#include
voidmain()
{
inti,j,upp,low,dig,spa,oth;
chartext[3][80];
upp=low=dig=spa=oth=0;
for(i=0;i<3;i++)
{
printf("\nInputline%d:
\n",i+1);
gets(text[i]);
for(j=0;j<80&&text[i][j]!
='\0';j++)
{
if(text[i][j]>='A'&&text[i][j]<='Z')
upp++;
elseif(text[i][j]>='a'&&text[i][j]<='z')
low++;
elseif(text[i][j]>='0'&&text[i][j]<='9')
dig++;
elseif(text[i][j]=='')
spa++;
elseoth++;
}
}
for(i=0;i<3;i++)
printf("%s\n",text[i]);
printf("uppercase:
%d\n",upp);
printf("lowercase:
%d\n",low);
printf("digit:
%d\n",dig);
printf("space:
%d\n",spa);
printf("other:
%d\n",oth);
}
7.11
#include
voidmain()
{
chara[5]={'*','*','*','*','*'};
charspace='';
inti,j,k;
for(i=1;i<=5;i++)
{
printf("\n");
printf("");
for(j=1;j<=i;j++)
printf("%c",space);
for(k=0;k<5;k++)
printf("%c",a[k]);
}
printf("\n");
}
7.12
#include
voidmain()
{
inti,j;
intj=0;
charch[80],tran[80];
printf("\nInputCipherCode:
");
gets(ch);
printf("\nCipherCode:
%s",ch);
while(ch[j]!
='\0')
{
if((ch[j]>='A')&&(ch[j]<='Z'))
tran[j]=155-ch[j];
else
if((ch[j]>='a')&&(ch[j]<='z'))
tran[j]=219-ch[j];
else
tran[j]=ch[j];j++;
}
i=j;
printf("\nOriginalText:
\n");
for(j=0;j
printf("%c",tran[j]);
}
第八章习题
8.1
#include
voidmain()
{
intgys(int,int);
intgbs(int,int,int);
intm,n,y,b;
scanf("%d%d",&m,&n);
y=gys(m,n);
printf("thegysis:
%d\n",y);
b=gbs(m,n,y);
printf("thegbsis:
%d\n",b);
}
intgys(intm,intn)
{
intt,s;
if(n>m)
{t=n;n=m;m=t;}
while(n!
=0)
{s=m%n;m=n;n=s;}
return(m);
}
intgbs(intm,intn,inty)
{return(m*n/y);}
8.3
#include
voidmain()
{
intprime(int);
intn;
scanf("%d",&n);
if(prime(n)==1)
printf("%disaprimenumber.\n",n);
else
printf("%disnotaprimenumber.\n");
}
intprime(intn)
{
inti,s;
for(i=2;i<=n/2;i++)
{if(n%i==0)
s=0;
else
s=1;
}
return(s);
}
8.4
#include
voidmain()
{
intb(inta[3][3]);
inta[3][3];
inti,j;
printf("inputthenumbersection:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("theoriginaloneis:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
b(a);
printf("thechangedoneis:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
intb(inta[3][3])
{
inti,j,t;
for(i=0;i<3;i++)