从问题到程序--习题答案.doc
《从问题到程序--习题答案.doc》由会员分享,可在线阅读,更多相关《从问题到程序--习题答案.doc(13页珍藏版)》请在咨信网上搜索。
1、从问题到程序高级语言程序设计第二章练习1. 指出下面的哪些字符序列不是合法的标识符:_abc x+- 3x1 Xf_1_4 Eoof_ x_x_2 _ I am答:不合法的标示符有:a$#24 非法符号#x+- 非法符号#3x1 不是以英文字母开头I am 非法符号“空格”bg-1 非法符号-2. 手工计算下列表达式的值:1)125 + 0125 2)0XAF - 0XFA3)24 * 3 / 5 + 6 4)36 + - (5 - 23) / 45)35 * 012 + 27 / 4 / 7 * (12 - 4)答:1)210 2)-75 3)20 4)40 5)3503. 在下面表达式的计
2、算过程中,在什么地方将发生类型转换,各个转换是从什么类型转换到什么类型,表达式计算的结果是什么?1)3 * (2L + 4.5f) - 012 + 442)3 * (int)sqrt(34) - sin(6) * 5 + 0x2AF3)cos(2.5f + 4) - 6 *27L + 1526 - 2.4L答:1)53.5 2)703.397077 在此题中十六进制数会在计算中(编译时)自动转成十进制数 3)1362.59357 4. 写程序计算第3 题中各个表达式的值。答:#include#includeint main() printf(%fn,3 * (2L + 4.5f) - 012
3、+ 44); printf(%fn,3 * (int)sqrt(34) - sin(6) * 5 + 0x2AF); printf(%fn,cos(2.5f + 4) - 6 *27L + 1526 - 2.4); system(pause); return 0;5. 写程序计算下面各个表达式的值:1) 2 341 257.+ 2) 106524*13 3) 23 5827 96 3 67. / . 4) 2 +1 7)ln ln(10 1) 2 +5)log5 2 1 6)e +1 7)arctan(log ( ) 3 e + 8) 3.6813(2.240.242 )2 9)1 23 4
4、5 + + / 10)ln(2 13+ e )6. 已知铁的比重是7.86,金的比重是19.3。写几个简单程序,分别计算出直径100 毫米和150 毫米的铁球与金球的重量。答:#includedouble f1(double r) double v,w; v=4.0/3.0*r*r*r*3.1415926; w=7.86*v; return w; double f2(double r) double v,w; v=4.0/3.0*r*r*r*3.1415926; w=19.3*v; return w; int main() printf(铁球的重量为: %f,金球的重量为: %fn,f1(0.
5、1/2),f2(0.1/2.0); printf(铁球的重量为: %f,金球的重量为: %fn,f1(0.15/2),f2(0.15/2.0); system(pause); return 0;7. 写程序计算 5x2 + 2x + 6 的两个根,考虑用合适的方式输出。(提示:对这个具体问题,可以先人工计算出判别式 b2 4ac 的值,以此作为已知信息,就可以写出程序了。)答:#include #include void f(double a,double b,double c) double temp=b*b-4*a*c; if(temp0) printf(方程的根为:%f,%f,(-b+s
6、qrt(temp)/2/a,(-b-sqrt(temp)/2/a); else if(temp=0) printf(方程有两个相同的根为:%f,-b/2/a); else printf(方程无解!); int main() f(5,2,6); /可以测试不同的数据 system(pause); return 0;8. 在计算机上试验本章正文中的一些程序。对它们做一些修改,观察程序加工和运行的情况,并对程序的行为做出解释。9. 在一个能正确工作工作的输出整数结果的程序里,将printf 的相应转换描述改为 %f或者 %ld,看看会出现什么问题。在一个能正确工作工作的输出双精度结果的程序里,1、
7、将printf 的相应转换描述改为 %d 或者 %ld,看看会出现什么问题。第三章练习1. 下面的字符序列中哪些不是合法的变量名:-abc _aa for pp.288 IBM/PC tihsWhile r24_s25 _a_b abc _345答:-abc for pp.288 to be IBM/PC ms-c #micro m%ust While abc 2. 假设整型变量a 的值是1,b 的值是2,c 的值是3,在这种情况下分别执行下面各个语句,写出执行对应语句后整型变量u 的值。1) u = a ? b : c;2) u = (a = 2) ? b + a : c + a;答:1)u
8、=2 2)u=43. 假设整型变量a 的值是1,b 的值是2,c 的值是0,写出下面各个表达式的值。1) a & !(b | c) & !a)2) !(a & b) | c ? a | b : a & b & c3) !(a + b c) & b = c * a b答:1)1 2)0 3)04. 下面程序在执行时,哪些地方将发生类型转换?程序打印的值是什么?int f (int n, float m) return (m + n) / 4;int main () float y = 3;printf(%dn, f(y, y + 1);return 0;答:2:参数1传递:形式参数为int,实际
9、参数为float,float转换为int4:除操作:参与/的对象有int型的4和float型有(m+n),int转换为float#include int f(int n,float m) return (m+n) /4;3:加操作:参与+的对象有int:n和float:m,int型的n转换为floatint main () float y=3; printf(%dn, f (y,y+1);5:函数结果传递:(m+n)/4结果的类型为float型,而函数要求返回的值类型为int,因而发生float型转换为int型 system(pause); return 0;1:表达式y+1求值:参与+的对象
10、有int:1和float:y,int转换为float5. 在计算机上试验本章正文中的一些程序。对它们做一些修改,观察程序加工和运行的情况,并对程序的行为做出解释。答案:略6. 定义求圆球的体积、求圆球的表面积、求圆柱体的体积、求圆柱体的表面积的函数。答:#includedouble f1(double r) double v; v=4.0/3.0*r*r*r*3.1415926; return v;double f2(double r) double s; s=4*r*r*3.1415926; return s;double f3(double r,double h) double v; v=
11、r*r*3.1415926*h; return v;double f4(double r,double h) double s; s=2*3.1415926*r*h+2*3.1415926*r*r; return s;int main() printf(圆球的体积为%fn,f1(0.15); printf(圆球的面积为%fn,f2(0.15); printf(圆柱体的体积为%lfn,f3(0.15,0.5); printf(圆柱体的面积为%lfn,f4(0.15,0.5); system(pause); return 0; 7. 1)不用函数,直接写一个主程序计算并输出直径为100 毫米和15
12、0 毫米的金、银、铜、铁、锡球的重量(以kg 为单位输出)。2)重新完成上面程序,先定义一个带有两个参数的函数,它能求出直径为x 的比重为y 的圆球的重量,而后在主程序里调用这个函数完成所需工作。将这样得到的解与不用函数的解比较,比较它们的长度、容易出错的程度。假设现在要求修改所用圆周率的精度,考虑用两种方式写程序的修改难度。3)请写程序,求出边长为100 毫米和150 毫米的金、银、铜、铁、锡立方体的重量。你可以利用前面的程序吗?是否很容易修改前面程序,完成这一计算?比较不用函数的解法和使用函数的解法在易修改和重复使用方面的效用。8. 定义函数:double tmax(double, dou
13、ble, double),它返回三个参数中最大的一个。写一个主函数试验各种参数情况。答:#includedouble tmax(double x,double y,double z) if(xy) return xz?x:z; else return yz?y:z;int main() printf(最大的一个为:%f,tmax(8,3,2); printf(最大的一个为:%f,tmax(8,13,2); printf(最大的一个为:%f,tmax(8,3,22); system(pause); return 0; 9. 写函数,它以两个电阻的值作为参数,求出并联的电阻值。答:并联电阻值的计算
14、公式为:R1*R2/(R1+R2)10. 如果四边形四个边的长度分别为a、b、c、d ,一对对角之和为2 ,则其面积为:S = (s a)(s b)(s c)(s d ) abcd cos2其中s =(a + b + c + d)/2。定义一个函数计算任意四边形的面积。设有一个四边形,其四条边边长分别为3、4、5、5,一对对角之和为145o ,写程序计算它的面积。11. 修改已知四边长求四边形面积的函数,增加对各种参数错误情况的检查和处理(如返回值0),用各种实例数据检查你的函数否检查出所有可能的错误情况。12. 分析本章正文中给出的求二次方程根的函数,看它缺乏对哪些特殊情况的处理。补充这些处
15、理,在需要时输出适当的信息,使之成为一个更完整的函数。写一个主函数,用各种特殊情况和一般情况测试所完成的函数。答:#include #include void f(double a,double b,double c) double temp=b*b-4*a*c; if(a=0)printf(方程的根为:%f,-c/b); if(temp0) printf(方程的根为:%f,%f,(-b+sqrt(temp)/2/a,(-b-sqrt(temp)/2/a); else if(temp=0) printf(方程有两个相同的根为:%f,-b/2/a); else printf(方程无解!); in
16、t main() f(5,2,6); /可以测试不同的数据 system(pause); return 0;13. 写一个简单程序,它输出从1 到10 的整数。14. 写一个简单程序,它输出从10 到10 的整数。15. 写一个两个整型参数的简单函数,它输出从第一个整数到第二个整数为止的整数序列。16. 用定义函数double power(double x, int n),它求出x 的n 次幂。用主函数试验很大的n 值(例如令x 值为1),看看会出现什么情况;用大的x 和n 值,看看发生浮点数计算溢出时会出现什么情况。17. 写一个程序,它在090 度之间每隔5 度输出一行数据,打印一个表。每
17、行中包括5 个项目:角度数,以及它所对应的正弦、余弦、正切、余切函数值。答:#include #include int main() double s=0*3.1415926/180; int i; for(i=0;i=90/5;i+) printf(%f ,%f ,%f ,%f ,%fn,s,sin(s),cos(s),tan(s),1/tan(s); s+=5*3.1415926/180; system(pause); return 0; 18. 查看有关公式,写求解并输出一元三次方程的根的函数。19. 写出求等差级数的和 ka kn= 1的函数。两种循环结构给出函数定义,再利用等差级数求
18、和公式给出函数定义。答:#includedouble f1(int n,double a) int i; double sum=0; for(i=1;i=n;+i) sum+=i*a; return sum;double f2(int n,double a) int i=1; double sum=0; while(i=n) sum+=i*a; +i; return sum;double f3(int n,double a) return n*(a+n*a)/2; int main() printf(%fn,f1(10,2.5); printf(%fn,f2(10,2.5); printf(%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 问题 程序 习题 答案
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。