
【篇一:谭浩强--c语言程序设计(第二版)习题答案】
ss=txt>第一章
1.请参照本章例题,编写一个c程序,输出以下信息:
**************************
very good!
**************************
解:
#includestdio.h
void main()
{
printf(**************************);
printf(\\n);
printf(very good!\\n);
printf(\\n);
printf(**************************);
}
2.编写一个c程序,输入a、b、c三个值,输出其中最大值。解:
#includestdio.h
void main()
{
int a,b,c,max;
printf(请输入三个数a,b,c:\\n);
scanf(%d,%d,%d,a,b,c);
max=a;
if(maxb) max=b;
if(maxc) max=c;
printf(最大数为: %d,max);
}
第二章
1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为p=(1+r)^n,r为年增长率;n为年数;p为与现在相比的百分比。
解:
#includestdio.h
#includemath.h
void main()
{
double p, r=0.1, n=10;
p=pow((1+r), n);
printf(%lf\\n, p);
}
3.请编程序将china译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。例如,字母a后面第4个字母是e, e代替a。因此,china应译为glmre。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为c、h、i、n、a,经过运算,使c1、c2、c3、c4、c5分别变为g、l、m、r、e,并输出。
解:
#include stdio.h
void main()
{
char c1=c,c2=h,c3=i,c4=n,c5=a;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf(密码是%c%c%c%c%c\\n,c1,c2,c3,c4,c5);
}
第三章
3.用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82, c1=a, c2=a。问在键盘上如何输入?
解:
#includestdio.h
void main()
{
int a, b; float x, y; char c1, c2;
scanf(a=%d, b=%d, a, b);
scanf( x=%f, y=%e, x, y);
scanf( c1=%c, c2=%c,c1, c2);
}
a=3, b=7
x=8.5, y=71.82
c1=a, c2=a
5. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2位数字。请编程序。
解:
#includestdio.h
void main()
{
float r,h,c1,sa,sb,va,vb;
scanf(%f,%f,r,h);
c1=2*3.14*r;
sa=3.14*r*r;
sb=4*sa;
va=4*3.14*r*r*r/3;
vb=sa*h;
printf(c1=%.2f\\n,c1);
printf(sa=%.2f\\nsb=%.2f\\nva=%.2f\\nvb=%.2f\\n,sa,sb,va,vb);
}
6. 输入一个华氏温度,要求输出摄氏温度。公式为c=5(f-32)/9,输出要求有文字说明,取位2小数。
解:
#includestdio.h
void main()
{
float f,c;
scanf(%f,f);
c=5*(f-32)/9;
printf(c=%.2f,c);
}
7. 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。思考以下问题:
(1)变量c1、c2应定义为字符型或整形?或二者皆可?
(2)要求输出c1和c2值的ascii码,应如何处理?用putchar函数还是printf函数?
(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2;与int c1, c2; 是否无条件地等价?
解:
#includestdio.h
void main()
{
char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);putchar(‘\\n);putchar(c2);putchar(‘\\n);
}
#includestdio.h
void main()
{
char c1,c2;
c1=getchar();
c2=getchar();
printf(c1=%d c2=%d\\n,c1,c2);
printf(c1=%c c2=%c\\n,c1,c2);
}
第四章
3. 写出下面各逻辑表达式的值。设a=3,b=4,c=5。
(1) a+bcb==c
(2) a||b+cb-c
(3) !(ab)!c||1
(4) !(x=a)(y=b)0
(5) !(a+b)+c-1b+c/2
解:
(1) 0
(2) 1
(3) 1
(4) 0
(5) 1
5. 有3个整数a、b、c,由键盘输入,输出其中最大的数,请编程序。解:
#includestdio.h
void main()
{
int a,b,c,temp,max;
printf(请输入3个整数: );
scanf(%d,%d,%d,a,b,c);
temp=(ab)?a:b;
max=(tempc)?temp:c;
printf(3个整数的最大数是%d\\n,max);
}
6. 给一个百分制成绩,要求输出等级a、b、c、d、e。90分以上为a,80~90分为b,70~79分为c,60分以下为d。
解:
#includestdio.h
void main()
{
float score;
char grade;
printf(请输入学生成绩: );
scanf(%f,score);
while(score100||score0)
{ printf(\\n输入有误,请重新输入: );
scanf(%f, score);
}
{
case 10:
case 9: grade=a;break;
case 8: grade=b;break;
case 7: grade=c;break;
case 6: grade=d;break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade=e;break;
}
printf(成绩是%5.1f, 相应的等级是%c. \\n,score,grade);
}
7. 给定一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字。例如原数为321,应输出123。
解:
#include stdio.h
void main()
{
long int num;
int indiv,ten,hundred,thousand,ten_thousand,place; /*分别代表个位、十位、百位、千位、万位和位数*/
printf(请输入一个整数(0~99999): );
scanf(%ld,num);
if (num9999) place=5;
else if(num999) place=4;
else if(num99)place=3;
else if(num9) place=2;
else place=1;
printf(place =%d\\n, place);
ten_thousand=num/10000;
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
indiv=num%10;
switch(place)
{ case 5: printf(%d,%d,%d,%d,%d,ten_thousand,thousand,hundred,ten,indiv); printf(\\n反序数字为: );
printf(%d%d%d%d%d\\n,indiv,ten,hundred,thousand,ten_thousand); break;
case 4: printf(%d,%d,%d,%d,thousand,hundred,ten,indiv);
printf(\\n反序数字为: );
printf(%d%d%d%d\\n,indiv,ten,hundred,thousand);
break;
case 3: printf(%d,%d,%d,hundred,ten,indiv);
【篇二:c语言程序设计第三版谭浩强课后习题答案完整版】
p class=txt>**************************
very good!
**************************
mian()
{printf(“**************************”);
printf(“\\n”);
printf(“very good!\\n”);
printf(“\\n”);
printf(“**************************”);
} 1.6 a、b、
c
mian()
{int a,b,c,max;
printf(“请输入三个数a,b,c:\\n”);
scanf(“%d,%d,%d”,a,b,c);
max=a;
if(maxb)
max=b;
if(maxc)
max=c; printf(%d”,max);
}
第三章
3.6写出以下程序运行的结果。
main()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\\101’,c5=’\\116’;
printf(“a%cb%c\c%c\abc\\n”,c1,c2,c3);
printf(“\\\b%c %c”,c4,c5);
}
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
aㄩn
3.7 要将china
4
例
a后面第4个字母是ee代替achina应译为glmre。请编一程
cl、c2、c3、c4、c5c’、’h’、’i’、’n’、’
a
c1、c2、c3、c4、c5分别变为’g’、’l’、’m’、’r’、’e
{ char c1=’c’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf(密码是%c%c%c%c%c\\n,c1,c2,c3,c4,c5);
}
密码是glmre
3.9求下面算术表达式的值。 1x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7 2(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5 12.5 23.5
3.10写出程序运行的结果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
}
911910
3.12 写出下面表达式运算后aa=12。设a和n都已定义为整型变量。 1a+=a2 a-=2 3 a*=2+3 4a/=a+a 5 a%=(n%=2)n的值等于5 6
a+=a-=a*=a
(1) 24 (2) 10 (3) 60(4) 0 (5) 0(6) 0
第四章 44若a=3b=4c=5x=1.2y=2.4z=-3.6u=51274n=128765c1=’a’c2=’b’。
a=_3_ _b=_4_ _c=_5
x=1.200000,y=2.400000,z=-3.600000
x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=’a’,c2=’b’;
printf(a=%2d b=%2d c=%2d\\n,a,b,c);
printf(x=%f,y=%f,z=%f\\n,x,y,z);
printf(x+y=%5.2f y+z=%5.2f z+x=%5.2f\\n,x+y,y+z,z+x);
printf(u=%6ld n=%9ld\\n,u,n);
printf(%s %s %d%s\\n,c1=’a’,or,c1,(ascii));
printf(%s %s %d%s\\n,c2=’a’,or,c2,(ascii));
}
47用scanfa=3b=7x=8.5y=71.82
main()
{ int abfloat xy
char c1c2 scanfa=%d_b=%da
b scanf_x=%f_y=%e,x
y scanf_c1=%c_c2=%cc1
c2
}
a=3_b=7
_x=8.5_y=71.82
_c1=a_c2=a
48设圆半径r=1.5
h=3
积。
用
scanf
main()
{float r,h,c1,sa,sb,va,vb;
scanf(%f,%f,r,h);
c1=2*3.14*r;
sa=3.14*r*r;
sb=4*sa;
va=4*3.14*r*r*r/3;
vb=sa*h;
printf(c1=%.2f\\n,c1);
printf(sa=%.2f\\nsb=%.2f\\nva=%.2f\\nvb=%.2f\\n,sa,sb,va,vb);
4
9
{float f,c;
scanf(%f,f);
c=5*(f-32)/9;
printf(c=%.2f,c);
}
410getchar函数读入两个字符给c1、
c2
个
c1、
c2
求输出c1和c2值的asciiputchar函数还是
printf
char c1
c2
与 int c1
c2
#includestdio.h
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(’\\n’);putchar(c2);putchar(’\\n’);
}
#includestdio.h
main()
{char c1,c2;
c1=getchar();c2=getchar();
printf(c1=%d c2=%d\\n,c1,c2);
printf(c1=%c c2=%c\\n,c1,c2);
}
第五章 5.1
5.2 c10表
示。
00代表“假”。例如35
的值为“真”
系统给出35的值为1。
5.3 写出下面各逻辑表达式的值。设a=3b=4c=5。
(1) a+bcb==c
(4) !(x=a)(y=b)0
(5) !(a+b)+c-1b+c/2
解
(1) 0
(2) 1
(3) 1
(4) 0
(5) 1
5.4 有3个整数a、b、
c
方法一
#include stdio.h
main()
{ int a,b,c;
printf(请输入3);
scanf(%d,%d,%d,a,b,c);
if(ab)
if(bc) printf(max=%d\\n,c);
else printf(max=%d\\n,b);
else if(ac) printf(max=%d\\n,c);
else printf(max=%d\\n,a);
}
#include stdio.h
main()
{ int a,b,c,temp,max;
printf(请输入3);
scanf(%d,%d,%d,a,b,c);
temp=(ab)?a:b; /* 将a和b中的大者存人temp中 */
max=(tempc)?temp:c; /* 将a和b中的大者与c*/ printf(3个整数的最大数是%d\\n”,max);
}
【篇三:c语言程序设计第三版谭浩强课后习题答案完整版】
ude stdio.h
void main()
{
printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\\n);
printf(very good! \\n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\\n);
}
1.6
#include stdio.h
void main()
{
float max(float x,float y,float z);
float a,b,c;
printf(请分别输入a,b,c:\\n);
scanf(%f,%f,%f,a,b,c);
printf(max=%f,max(a,b,c));
}
float max(float x,float y,float z)
{
float m,n;
m=xy? x: y;
n=mz? m: z;
return(n);
}
3.6
#include stdio.h
void main()
{
char c1=’a’,c2=’b’,c3=’c’,c4=’\\101’,c5=’\\116’;
printf(“a%c b%c\c%c\abc\\n”,c1,c2,c3);
printf(“\\\b%c %c\\n”,c4,c5);
}
3.9.1
#include stdio.h
void main()
{
double x=2.5,y=4.7,z;
int a=7;
z=x+a%3*(int)(x+y)%2/4;
printf(该表达式的值为:%f,z);
}
3.9.2
#include stdio.h
void main()
{
int a=2,b=3;
float x=3.5,y=2.5,z;
z=(float)(a+b)/2+(int)x%(int)y;
printf(该表达式的值为:%f,z);
}
4.5
#include stdio.h
void main()
{
int a=5,b=7;
double x=67.85,y=-7.124;
char c=a;
long n=1234567;
unsigned u=65535;
printf(%d%d\\n,a,b);
printf(%3d%3d\\n,a,b);
printf(%f,%f\\n,x,y);
printf(%-10f,%-10f\\n,x,y);
printf(%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\\n,x,y,x,y,x,y); printf(%e,%10.2e\\n,x,y);
printf(%c,%d,%o,%x\\n,n,n,n);
printf(%ld,%lo,%x\\n,n,n,n);
printf(%u,%o,%x,%d\\n,u,u,u,u);
printf(%s,%5.3s\\n,computer,computer);
}
4.6
#include stdio.h
void main()
{
int a,b;
float x,y;
char c1,c2;
scanf(a=%d b=%d,a,b);
scanf( %f %e,x,y);
scanf( %c %c,c1,c2);
}
4.7
#includestdio.h
void main()
{
int a,b;
float x,y,z;
char c1,c2;
scanf(%5d%5d,a,b);
scanf(%f%f%*f%f,x,y,z);
scanf(%c%c,c1,c2);
}
4.8
#include stdio.h
#define pi 3.14
void main()
{
float r,h,l,s1,s2,v1,v2;
printf(请输入r,h的值:\\n);
scanf(%f,%f,r,h);
l=2*pi*r;
s1=pi*r*r;
s2=4*s1;
v1=4/3*pi*r*r*r;
v2=s1*h;
printf(圆周长为:%.2f\\n,l);
printf(圆面积为:%.2f\\n,s1);
printf(圆球表面积为:%.2f\\n,s2);
printf(圆球体积为:%.2f\\n,v1);
printf(圆柱体积为:%.2f\\n,v2);
}
5.5 #include stdio.h
void main()
{
float x,y;
printf(请输入x的值:\\n);
scanf(%f,x);
if(x1)
y=x;
else
if(x=1x10)
y=2*x-1;
else
y=3*x-11;
printf(x与y的值分别为:\\n%f,%f,x,y);
printf(\\n);
}
5.6 #include stdio.h
void main()
{
float b;
int a;
printf(请输入该同学的成绩:\\n);
scanf(%f,b);
while (b0||b100)
{
printf(输入有误,请重新输入:\\n);
scanf(%f,b);
}
a= int(b/10);
if(a6) a=5;
switch(a)
{
case 10:
case 9: printf(该同学为等级:a);break;
case 8: printf(该同学为等级:b);break;
case 7: printf(该同学为等级:c);break;
case 6: printf(该同学为等级:d);break;
case 5: printf(该同学为等级:e);break;
}
}
#include stdio.h
#include math.h
void main()
{
int x,y,m,n,i=1,j=0;
printf(请给出一个不多于5位的正整数:\\n);
scanf(%d,x);
while(x=0||x=100000)
{printf(输入有误\\n请给出一个不多于5位的正整数:\\n);scanf(%d,x);
}
for(n=0;n5;n++)
{
y=int(x/pow(10,n));
