ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:25.35KB ,
资源ID:4817861      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4817861.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(谭浩强C程序设计第三版课后答案整本书.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

谭浩强C程序设计第三版课后答案整本书.docx

1、谭浩强C程序设计第三版课后答案整本书C程序设计(第三版)课后习题参考解答1.6 写一个程序,输入a,b,c三个值,输出其中最大者。解: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);第2章 程序的灵魂算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围

2、之内,因而提高了算法的质量。2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。第3章 数据类型、运算符与表达式33请将下面各数用八进制和十六进制数表示:(1)10 (2)32 (3)75 (4)617(5)111 (6)2483 (7)28654 (8)21003解:(1) (10) 10(12) 8(A) 16(2) (32)10=(40)8=(20) 16(3)(75)10=(113)8=(4B) 16(4)(617)10=(176627)

3、8=(FD97) 16此题可以这样考虑:带符号数在计算机中采用补码表示,正数的补码与原码相同,负数的补码模真值。若使用16位存储,模为21665536。617的补码为65536(167)64919(176627)8(FD97)16(5)(111)10=(177621)8=(FF91) 16(6)(2483)10=(4663)8=(9B3) 16(7)(28654)10=(110022)8=(9012) 16(8)(21003)10=(51013)8=(520B) 1634将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。变量的类型25232769int型long型sor

4、t型signed char(8位)unsigned int型unsigned long型unsigned short型unsigned char型注:如果没有学过二进制和补码,此题可以不做。解:各数据在内存中的存储形式如下表所示:变量的类型25232769int型00 08 位111111*0 15 100 001(溢出) 14long型00 0 2411 1110 3100 0100 001 16 14short型00 08111111*0 15100 001(溢出) 14signed char(8位)00000001(溢出)unsigned int型00 08 11 110 15100 0

5、01 14unsigned long型00 02411 110 3100 0100 001 16 14unsigned short型00 08 11 110 15100 001 8unsigned char型其中int和short类型,其取值范围是3276832767。32769在这两种类型中实际表示负数,它是一个负数的补码,对其再求一次补码可得其真值,即(6553632769)32767。char和unsigned char为8位,若将int或long类型数据赋给这种类型,则截取数据低8位。同理,若将long赋给int,则截取低16位。35字符常量和字符串常量有什么区别?解:字符常量是一个字

6、符,用单引号括起来。字符串常量是由0个或若干个字符组合而成,用双引号括起来,存储时自动在字符串最后加一个结束符号0。36写出以下程序运行的结果:# includevoid main ( ) char c1=a, c2=b, c3=c, c4=101, c5=116; printf (“a%c b%ct c%ct abcn”, c1, c2, c3); printf (“tb%c %c”, c4, c5);解:程序运行的结果为:aa bb cc abc A N37要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替

7、“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为C,h,i,n,a,经过运算,使c1,c2,c3,c4,c5的值分别变为G,l,m,r,e,并输出。解:main ( ) char cl=C, c2=h, c3=i, c4=n, c5=a; c1+=4; c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是cccccn, c1, c2, c3, c4, c5);运行结果:密码是Glmre38例2.6能否改成如下:main ( ) int c1, c2; (原为 char c1, c2) c1=97;

8、c2=98; printf (“%c %cn”, c1, c2); printf (“%d %dn”, c1, c2);解:可以。因为在可输出的字符范围内,用整型和用字符型作用相同。39求下面算术表达式的值。(1)x+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解:(1)2.5(2)3.5 310写出程序运行的结果。main ( ) int i, j, m, n; i=8; j=10; m=+i; n=j+; printf (“%d, %d, %d, %d”, i, j

9、, m, n);解:运行结果为:9,11,9,10311写出下面赋值的结果。格中写了数值的是要将它赋给其他类型的变量,将所有空格填上赋值后的数值。int9942chardunsigned int7665535float53.65long int68解:int99100765368421charcdL5D*unsigned int9915535float99.000000100.00000076.00000053.6568.00000042.000000long int99155353.12 出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。(1)a+=a (2)a-=2 (

10、3)a*=2+3 (4)a/=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 第4章 最简单的C程序设计顺序程序设计4.4 若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51247,n=128765,c1=a,c2=b,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下:a=3b=4c=5x= 1.200000,y= 2.400000,z= -3.600000x+y=3.60y+z=-1.20z+x=-2.40u= 51247n=128765c1

11、=aor97(ASCII)c2=bor98(ASCII)解:main ( )int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z= -3.6; u=51247;n=128765; c1=a;c2=b; printf(“n”); printf(“a=%2db=%2dc=%2dn”,a,b,c); printf(“x=%.6f,y=%.6f,z=%.6fn”,x,y,z); printf(“x+y=%.2fy+z=%.2fz+x=%.2fn”,x+y,y+z,z+x); printf(“u=%6ld

12、n=%9ldn”,u,n); printf(“c1=%c or %d(ASCII)n”,c1,c1); printf(“c2=%c or %d(ASCII)n”,c2,c2);45请写出下面程序的输出结果:main ( ) int a=5,b=7; float x=67.8564,y=-789.124; char c=A; long n=1234567; unsigned u=65535; printf(“%d%dn”,a,b); printf(“%3d%3dn”,a,b); printf(“%f,%fn”,x,y); printf(“%-10f,%-10fn”,x,y); printf(“%

13、8.2f, %8.2f,%4f, %4f, %3f, %3fn”,x,y,x,y,x,y); printf(“%e,%10.2en”,x,y); printf(“%c,%d,%o,%xn”,c,c,c,c); printf(“%ld,%lo,%xn”,n,n,n); printf(“%u,%o,%x,%dn”,u,u,u,u); printf(“%s,%5.3sn”,”COMPUTER”,”COMPUTER”);运行结果:575767.856400, -789.12402367.856400, -789.12402367.86,-789.12,67.8564,-789.1240,67.8564

14、00,-789.1240236.785640e+01,-7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER,COM可以发现,输出数据中若有负号、e和小数点,这些字符也占位。4.6 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=A,c2=a。问在键盘上如何输入?#include void main() int a , b; float x , y; char c1 ,c2; scanf(“a=%d b=%d”,&a , &b); scanf(“ %f %e”,&x , &y);

15、 scanf(“ %c %c”,&c1 , &c2);解:a=3b=78.571.82Aa4.7下面的scanf函数输入数据,使a=10,b=20,c1=A,c2=a,x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);解:main ( ) int a,b;float x,y,z; char c1,c2; scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z); printf(“a=%d, b=%d, c1=%c, c2=%

16、c, x=%6.2f, y=6.2f, z=6.2fn”),a,b,c1,c2,x,y,z);运行情况如下:1020Aa1.5 3.751.5,67.8 (此行为输入的数据,其中为空格)a=10, b=20, c1=A, c2=a, x=1.50, y=-3.75, z=67.80 (此行为输出)说明:按%5d格式的要求输入a和b时,要先键入三个空格,然后再键入10与20。%*f是用来禁止赋值的。在输入时,对应于%*f的地方,随意打入了一个数1.5,该值不会赋给任何变量。4.8圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。用scanf输入数据,输出计算结果,

17、输出时要求有文字说明,取小数点后2位数字。请编程序。解:main ( ) float pi,h,r,l,s,sq,vq,vz; pi=3.1415926; printf(“请输入圆半径r,圆柱高h:n”); scanf(“%f,%f”,&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h; printf(“圆周长为: l=%6.2fn”,l); printf(“圆面积为: s=%6.2fn”,s); printf(“圆球表面积为: sq=%6.2fn”,sq); printf(“圆球体积为: sv=%

18、6.2fn”,vq); printf(“圆柱体积为: sz=%6.2fn”,vz);运行结果:请输入圆半径r,圆柱高h:1.5,3圆周长为: l=9.42圆面积为: s=7.07圆球表面积为: sq=28.27圆球体积为: sv=7.95圆柱体积为: sz=21.214.9输入一个华氏温度,要求输出摄氏温度,公式为C=(5/9)(F-32)输出要有文字说明,取2位小数。解:main ( ) float c,f; printf(“请输入一个华氏温度:n”);scanf(“%f”,&f); c=(5.0/9.0)*(f-32); /*注意5和9要用实型表示,否则5/9的值为0*/ printf(“

19、摄氏温度为:%5.2fn”,c); ;运行结果:请输入一个华氏温度:78摄氏温度为:25.56第5章 选择结构程序设计5.2语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非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(

20、2)1(3)1(4)0(5)15.4有3个整数a,b,c,由键盘输入,输出其中最大的数。解:方法一:程序如下:main ( ) int a,b,c; printf(“请输入3个整数:”); scanf(“%d,%d,%d”,&a,&b,&c); if (ab) if (bc)printf(“max=%dn”,c); elseprintf(“max=%dn”,b); else if (ab)? a:b; /* 将a和b中的大者存入temp中 */ max=(tempc)? temp:c; /* 将a和b中的大者与c比较,取最大者 */ printf(“3个整数中最大数是%dn”,max);方法三

21、:ab?(ac?a:c):(bc?b:c)运行结果:请输入3个整数:12,34,93个整数的最大数是34。5.5有一函数: 写一程序,输入x值,输出y值。解:程序如下main ( ) int x,y; printf(“输入x:”); scanf(“%d”,&x); if (x1) /* x1 */ y=x; printf(“x=%d3d, y=x=%dn”,x,y); else if (x10) /* 1x100 | score9999)place=5; else if (num999)place=4; else if (num99)place=3;else if (num9)place=2;

22、else place=1;printf(“place=%dn”,place);printf(“每位数字为:”);ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*1

23、00-ten*10);switch(place)case 5:printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%d%d%dn”,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,thous

24、and);break;case 3:printf(“%d,%d,%d”,hundred,ten,indiv); printf(“n反序数字为:”);printf(“%d%d%d n”,indiv,ten,hundred);break;case 2:printf(“%d,%d”, ten,indiv); printf(“n反序数字为:”);printf(“%d%d n”,indiv,ten);break;case 1:printf(“%d”, indiv); printf(“n反序数字为:”);printf(“%dn”,indiv);break; 运行结果:请输入一个整数(099999):98765位数5每位数字为:9,8,7,6,5反序数字为:567895.8企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提10;利润高于10万元,低于20万元(100000I200000)时,其中10万元按10提成,高于10万元的部分,可提成7.5%;200000

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1