谭浩强c语言程序设计第三版课后习题
答案
【篇一:谭浩强--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;