欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言程序设计第三版谭浩强课后习题答案完整版.docx

    • 资源ID:12277409       资源大小:634.62KB        全文页数:100页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计第三版谭浩强课后习题答案完整版.docx

    1、C语言程序设计第三版谭浩强课后习题答案完整版1.6C语言程序设计第三版谭浩强编写一个程序,输入 a、b、c 三个值, 输出其中最大值。main()课后习题答案完整版第一章1.5 请参照本章例题,编写一个 C 程序, 输出以下信息:*Very Good!*解:mian()int a,b,c,max;printf( “请输入三个数 a,b,c:n ” );scanf( “%d,%d,%”d ,&a,&b,&c);c1=a,c2=b,c3= c,c4= 101 ,c5= 116;printf( “a%cb%c n”,c1,c2,c3);printf( “ b%c %c” ,c4,c5);解:aa 口

    2、 bb 口口口 cc 口口口口口口 abcA 口 N3.7要将 China 译成密码,译码规律是: 用原来字母后面的第 4 个字母代替原来的 字母例如,字母 A 后面第 4 个字母是 E . E代替A。因此,China应译为 Glmre 。请编一程序,用赋初值的方法使 cl 、c2、c3、c4、c5 五个变量的值分别为, C、h、i 、n、a经过运算,使 cl、c2、c3、c4、c5分别变为G、 I 、 m r、 e,并输出。main() charc1= C ,c2= h ,c3= i ,c4= n ,c 5= a ;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(

    3、密 码是 c%c%c%c%cn,c1,c2,c3,c4,c5);运行结果:密码是 GImre解:1 )x+a%3*(int)(x+y)%2/43.9 求下面算术表达式的值。设 x=2.5,a=7,y=4.73.12 写出下面表达式运算后 a 的值,设原y+z=%5.2fJ II I! a,o rJ II I! a,o rmain()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=%2dn,a,b,c);printf(x=%f,y=%f,

    4、z=%fn,x,y,z);printf(x+y=%5.2fz+x=%5.2fn,x+y,y+z,z+x);printf(u=%6ld n=%9ldn,u,n);n,c1= ,c1,(ASCII);n,c2= ,c2,(ASCII);47 用 scanf 下面的函数输入数据, 使 a=3,b=7, x=8.5 , y=71.82 , c仁/ Ax, c2= x amain()int a , b; float x , y;char c1c2 ;scanf ( a=%d_b=%d, &a, &b);scanf ( _x=%f_y=%e,&x, &y);scanf (_c1 =%c_c2=%c , &

    5、c1, &c2);a=3_b=7_x=8.5_y=71.82_c1=A_c2=a4. 8设圆半径r=1.5,圆柱高h=3,求圆周 长、圆面积、圆球表面积、圆球体积、圆柱 体积。用 scanf 输入数据,输出计算结果, 输出时要求文字说明,取小数点后两位数 字。请编程序。main()float r,h,C1,Sa,Sb,Va,Vb;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=%.2fn,C1);printf(Sa=%.2fnSb=%.2fnVa=%.2fnVb=%.2fn,Sa,Sb,Va,Vb);4 9

    6、 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位 2 小数。printf(c=%.2f,c);410 编程序,用 getchar 函数读入两个字符给cl、c2,然后分别用函数和函数输出 这两个字符。并思考以下问题:(1)变量 c1 、 c2 应定义为字符型或整形?抑二者皆 可?(2)要求输出cl和c2值的ASCII码, 应如何处理?用 putchar 函数还是 printf 函数? (3)整形变量与字符变量是否在任 何情况下都可以互相代替?如:char c1 , c2;与int c1 , c2;是否无条件的等价?#includestdio.hmain(

    7、)main()float F,c;char c1,c2;scanf(%f,&F);c1=getchar();c2=getchar();putchar(c1);putchar( n);putchar(c 示。但是判断一个逻辑量的值时, 以 0 代表2);putchar( n);#includestdio.hmain()char c1,c2;c1=getchar();c2=getchar();printf(c1=%d c2=%dn,c1,c2);printf(c1=%c c2=%cn,c1,c2);第五章5.1什么是算术运算?什么是关系运算?什么是逻辑运算?解:略。5.2C 语言中如何表示“真”和

    8、“假”? 系统如何判断一个量的“真”和“假”?“真”,以非 0 代表“假”。例如 3&5的值 为“真”,系统给出 3&5的值为 1。5.3写出下面各逻辑表达式的值。设 a=3, b=4,c=5。(1)a+bc&b=c(2)a|b+c&b-c(3)!(ab)&!c|1(4)!(x=a)&(y=b)&0(5)!(a+b)+c-1&b+c/2解:(1) 0(2)1(3)1(4)0(5)1解:设有一个逻辑表达式, 若其结果为“真”,5.4有3个整数a b、c,由键盘输入,#include 方法二: 使用条件表达式, 可以使程序更加 main() 简明、清晰。int x,y; 程序如下:方法一 int

    9、a,b,c,temp,max;#include printf( 请输入 3个整数: );1main()scanf(%d,%d,%d,&a,&b,&c); int a,b,c;temp=(ab)?a:b; /*将a和b中printf( 请输入 3个整数: );的大者存人 temp 中 */scanf(%d,%d,%d,&a,&b,&c);max=(tempc)?temp:c; /* 的大者与 c 比较,取最大者 */将a和b中if(ab)printf(3 个整数的最大数是%dn”,max);if(bc) printf(max=%dn,c);else printf(max=%dn,b);5.5 有

    10、一函数:else if(ac) printf(max=%dn,c);写一程序,输入 x 值,输出 y值。else printf(max=%dn,a);解:printf( 输入 x:);#include scanf(%d,&x);A、B、C、D、E。90分以上为A ,if(x1) /*x1 */ y=x;printf(x=%3d, y=x=%dn,x,y);else if (x10) /* 1 x-10 */8090分为 B, 7079分为 C, 60分以 下为 D。解:程序如下:#include main() float score; y=2*x-1;printf(x=%3d, y=2*x-1

    11、=%dn,x,y);else /* x 10 */ y=3*x-11;printf(x=%3d, y=3*x-11=%dn,x,y);char grade;printf( 请输入学生成绩: );scanf(%f,&score);while(score100|(score0) printf(n 输入有误 , 请重新输入: );scanf(%f,&score);switch(int)(score/10) 求它是几位数; 分别打印出每一位数case 8: grade= B;break;case 7: grade= C;break;case 6: grade= D;break;case 5:case

    12、4:case 3:case 2:case 1:case 0: grade= E;printf( 成绩是 %5.1f ,相应的等级是 %c。 n,score,grade);说明:对输入的数据进行检查, 如小于 0 或 大于 100,要求重新输入。 (int)(score/10) 的作用是将 (score/10) 的值进行强制类 型转换,得到一个整型值。字; 按逆序打印出各位数字。例如原数为 321,应输出 123。解:#include main() long int num;intindiv,ten,hundred,thousand,ten_thousand,place;/* 分别代表个位、 十

    13、位、百位、千位、万位和位数 */printf( 请输入一个整数(099999):);scanf(%ld,&num);if (num9999) place=5;else if(num999) place=4;else if(num99) place=3;else place=1;,ten,indiv);printf(place =%dn, place);printf(n反序数字为: );ten_thousand=num/10000;printf(%d%d%d%dn,indiv,ten,hundredthousand=num/1000%10;,thousand);hundred=num/100%1

    14、0;break;ten=num%100/10;case3indiv=num%10;printf(%d,%d,%d,hundred,ten,indiv);switch(place)printf(n反序数字为: ); case 5: printf(%d,%d,%d,%d,%d,ten_thousand,printf(%d%d%dn,indiv,ten,hundred);thousand,hundred,ten,indiv);break;printf(n 反序数字为; );case 2: printf(%d,%d,ten,indiv);printf(n反序数字为: );printf(%d%d%d%d

    15、%dn,indiv,ten,hundred,thousand,ten_thousand);printf(%d%dn,indiv,ten);break;break;else if(num9) place=2;printf(%d,%d,%d,%d,thousand,hundredcase 1: printf(%d,indiv);printf(n 反序数字为: );printf(%dn,indiv);break;5.8企业发放的奖金根据利润提成。利润 I低于或等于 10 万元时,奖金可提成 10% ; 利润高于 10 万元,低于 20 万元( 100000I 200000)时,其中10万元按10勉成

    16、, 高于 10 万元的部分, 可提成 7.5% ; 2000001 400000时,其中20万元仍按上 述办法提成 (下同),高于 20 万元的部分按 5%提成;4000001 600000 时,高于 40 万 元的部分按 3%g成;600000 I 1000000 时,超过 100 万元的部分按 1% 提成。从键盘输入当月利润 I ,求应发放奖 金总数。要求: (1) 用 if 语句编程序; (2) 用 switch 语句编程序。解:计算利润时, 要特别注意不同利润的不 同提成比例。例如,利润为 15万元,其中 有 10 万元按 10%的比例提成,另外 5 万元 则按 7.5%提成。(1)

    17、用 if 语句编程序。#include main() long i;floatbonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1; /* 利 润为 10万元时的奖金 */bon2=bon1+100000*0.075; /* 利润为 20 万元时的奖金 */bon4=bon2+200000*0.05; /* 利润为 40 万元时的奖金 */bon6=bon4+200000*0.03; /* 利润为 60 万元时的奖金 */bon10=bon6+400000*0.015; /* 利润为 100万元时的奖金 */ printf( 请输入利润 i :);sc

    18、anf(%ld,&i);润在 100 万元以上时的奖金 */if(i=100000)bonus=i*0.1; /* 利润 在 10 万元以内按 0.1 提成奖金 */else if(i=200000)bonus=bon1+(i-100000)*0.075; /* 利润在 10 万至 20万元时的奖金 */else if(i=400000)bonus=bon2+(i-200000)*0.05; /* 利润在 20 万至 40万元时的奖金 */else if(i=600000)bonus=bon4+(i-400000)*0.03; /* 利润在 40 万至 60万元时的奖金 */else if(i

    19、=1000000)bonus=bon6+(i-600000)*0.015; /* 利 润在 60 万至 100万元时的奖金 */elsebonus=bon10+(i-1000000)*0.01; /* 利 printf( ”奖金是 %10.2fn,bonus);此题的关键在于正确写出每一区间的奖金 计算公式。例如利润在 10万元至 20 万时, 奖金应由两部分组成:利润为 10万元时应得的奖金。即100000x 0.1 ;10万元以 上部分应得的奖金。即(num-100000) x 0.075。同理,20万40万这个区间的奖金 也应由两部分组成:利润为 20万元时应 得的奖金,即 100000

    20、x 0.1 x 10 万 x 0.075 ; 20 万 元 以 上 部 分 应 得 的 奖 金 , 即 (num-200000)x 0.05。程序中先把 10 万、 20 万、40 万、60 万、100万各关键点的奖 金计算出来,即 bon1、bon2、bon4、bon6、 hon 10;然后再加上各区间附加部分的奖金。(2) 用 switch 语句编程序。输入利润 i ,确定相应的提成等级 branch根据 branch 确定奖金值0 奖金=i*0.11 奖金 =bon1+(i-105)*0.0752 奖金 =bon2+(i-2*105)*0.0534 奖金 =bon4+(i-4*105)*

    21、0.0356 奖金 =bon6+(i-6*105)*0.01578910 奖 金=bon10+(i-106)*0.01输出奖金#include main() long i;float bonus, bon1, bon2, bon4, bon6,bon10;int c;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf( 请输入利润 i :);scanf(%ld,&i);c=i/100000;if(c10) c=10;sw

    22、itch(c) case 0: bonus=1*0.1;break;case 1bonus=bon1+(i-100000)*0.075;break;case 2 :case 3: bonus=bon2+(i-200000)*0.05;break;case 5:bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bon10+(i-1000000)*0.01;printf( 奖金是 %10.2f,bonus);5.9输入 4 个整

    23、数,要求按由大到小的顺 序输出。解:此题采用依次比较的方法排出其大小顺 序。在学习了循环和数组以后, 可以有更多 的排序方法。 int t,a,b,c,d;printf( 请输入 4 个整数: ); scanf(%d,%d,%d,%d,&a,&b,&c,&d);printf(na=%d,b=%d,c=%d,d=%dn,a,b,c,d);if(ab) t=a; a=b; b=t;if(ac) t=a; a=c; c=t;if(ad) t=a; a=d; d=t;if(bc) t=a; b=c; c=t;if(bd) t=b; b=d; d=t;if(cd) t=c; c=d; d=t;print

    24、f( 排序结果如下: n);printf(%d, %d, %d, %dn,a,b,c,d);5.10有 4个圆塔,圆心分别为 (2 ,2) 、(-2 ,今输入任一点的坐标,求该点的建筑高度( 塔外的高度为零 ) 。程序如下:#include main() int h=10;floatx1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;printf( 请输入一个点 (x,y) :);scanf(%f,%f,&x,&y);d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);/* 求该点到各中心点的距离 */d2=(x-

    25、x2)*(x-x2)+(y+y2)*(y+y2);d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);printf( 该点高度为 %dn,h);第六章 循环控制6.1输入两个正整数 m和n,求其最大公约 数和最小公倍数。main()long m,n,i=1,j,s;scanf(%ld,%ld,&m,&n);for(;i=m&i=n) j=m;else j=n;for(;!(j%m=0&j%n=0);j+);printf(s=%ld,j=%ldn,s,j);6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个

    26、数int n,sum=0,i=1,s=2;#includestdio.hmain()char c;int i=0,j=0,k=0,l=0;while(c=getchar()!= n)if(c=65&c=97&c=48&c=57) j+;else if(c=32) k+;else l+;printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l);6.3求 Sn=a+aa+aaa+aaaaa(有 n 个 a) 之值, 其中 a 是一个数字。例如: 2+22+222+2222+22222( n=5), n 由键盘输 入。#includemath.hscanf(%d,&n);while(

    27、i=n)sum=sum+s;s=s+2*pow(10,i);i+;printf(sum=%dn,sum);6.4求,(即求 1!+2!+3!+4!+5!+ +20!)main()int n,i=1;long sum=0,s=1;scanf(%d,&n);while(i=n) s=s*i;sum=sum+s;i+;printf(sum=%ldn,sum);6.5求main()main()i=1,j=1,k=1,s1=0,s2=0,s3=0,sum;for(;i=100;i+) s1=s1+i;for(;j=50;j+) s2=s2+j*j;for(;k=100&x1000) a=0.01*x;b=10*(0.01*x-a);c=x-100*a-1printf(%5d,x)


    注意事项

    本文(C语言程序设计第三版谭浩强课后习题答案完整版.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开