首页 C语言程序设计:现代方法第二章全部习题答案

C语言程序设计:现代方法第二章全部习题答案

举报
开通vip

C语言程序设计:现代方法第二章全部习题答案  C语言程序设计现代方法第二章全部习题答案  前言本人在通过《C语言程序设计:现代方法(第2版)》自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考。这些答案是本人自己解答,并参考GitHub上相关的分享和Chegg.com相关资料。因为并没有权威的答案来源,所以可能会存在错误的地方,如有错误还希望大家能够帮助指出。第二章练习题和编程题答案练习题2.2节1.建立并运行由Kernighan和Ritchie编写的著名的“helloworld”程序:1#in...

C语言程序设计:现代方法第二章全部习题答案
  C语言程序设计现代方法第二章全部习题答案  前言本人在通过《C语言程序设计:现代方法(第2版)》自学C语言时,发现国内并没有该 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考。这些答案是本人自己解答,并参考GitHub上相关的分享和Chegg.com相关资料。因为并没有权威的答案来源,所以可能会存在错误的地方,如有错误还希望大家能够帮助指出。第二章练习题和编程题答案练习题2.2节1.建立并运行由Kernighan和Ritchie编写的著名的“helloworld”程序:1#include2intmain(void)3{4printf("helloworld!\n");5}在编译时是否有警告信息?如果有,需要如何改进呢?答:如果使用部分比较老的编译器如turboC等,会生成警告信息,指出main函数并没有返回任何值。这是因为在声明main函数时使用了int,表明函数会返回一个整型数值,这个数值为任意(因为main后面是void)。但是上面的代码中并没有return语句,所以并不会返回任何值。加入return语句后便可消除警告。1/*加入return语句后的版本*/2#include3intmain(void)4{5printf("Helloworld!\n");6return0;7}如果是使用IDE中的编译器,且IDE版本比较新(如本人目前使用的Code:Blocks)即使没有return语句,编译器也不会生成警告信息。2.思考下面的程序:1#include2intmain(void)3{4printf("Parkinson'sLaw:\nWorkexpandssoasto");5printf("fillthetime\n");6printf("availableforitscompletion.\n");7return0;8}(a)请指出程序中的指令和语句。(b)程序的输出是什么?答:(a)给出的程序中有一个指令#include和三条printf语句和一条return语句组成。  (b)程序的输出结果为Parkinson'sLaw:Workexpandssoastofillthetimeavailableforitscompletion.2.4节3.通过下列方法缩写程序dweight.c:(1)用初始化式替换对变量height、length和width的赋值;(2)去掉变量weight,在最后的printf语句中计算(volume+165)/166。答:1#include2intmain(void)3{4/*用初始化替代对变量赋值就是在声明变量时直接为其赋值*/5intheight=8,length=12,width=10,volume=height*length*width;6printf("Dimensions:%dx%dx%d\n",length,width,height);7printf("Volume(cubicinches):%d\n",volume);8/*此处则省略原来对于weight,并将计算公式直接放入printf语句中*/9printf("Dimensionalweight(pounds):%d\n",(volume+165)/166);10return0;11}4.编写一个程序来声明几个int型和float型变量,不对这些变量进行初始化,然后直接显示它们的值。这些值是否有规律?(通常情况下没有)。答:1#include2intmain(void)3{4inta,b,c;5floate,f,g;6printf("a:%d\nb:%d\nc:%d\ne:%f\n%f:f\ng:%f\n"a,b,c,d,e,f,g);7return0;8}实际上并没有什么规律,上面这些变量既没有被初始化也没有在程序中被赋值,这时变量被显示出来的值取决于许多因素,所以无法确定最终显示的结果。2.7节5.判断下列C语言标识符哪些不是合法的?(a)100_bottles(b)_100_bottles(c)one_hundred_bottles(d)bottles_by_the_hundred_答:不合法的标识符只有(a),因为标识符只能以字母或下划线开头,而100_bottles是以数字开头的,所以不会发。另外C语言还规定了下划线后跟一个大写字母是保留字,不应该在程序中使用(书中后面有提及)。6.为什么说在标识符中使用多个相邻的下划线(如current___balance)不太合适?答:因为在阅读程序时很难分清到底有几个相邻的下划线,如current____balance和current_____balance,前者是4个下划线后者是5个下划线。在未来维护程序时不论是编写者本人还是他人,都容易弄混下划线的数量,造成不必要的混乱。7.判断下列哪些是C语言的关键字?(a)for(b)If(c)main(d)printf(e)while答:只有(a)for和(e)while是关键字,其余全都不是。(b) If是因为C语言区分大小写,所以If和if并不相同,if是关键字但是If不是。(c)main和(d)printf也不是关键字,main()函数是C语言自动调用的函数,但是我们依旧可以将变量命名为main(不建议这样做)。printf()则是我们头文件内包含的函数,如果不调用这个头文件那么我们一样可以将变量命名为printf。总的来说只有在关键字表里的单词才是关键字,其余都不是关键字。2.8节8.下面的语句中有多少个记号? answer=(3*q-p*p)/3;答:14个记号,分别是answer、=、(、3、*、q、-、p、*、p、)、/、3、;。9.在练习题8的记号之间插入空格,使该语句更易于阅读。答:answer=(3*q-p*p)/3;10.在dweight.c程序(2.4节)中,哪些空格是必不可少的?答:程序当中出现两次的int后面空格不能少,return0;中间的空格不能少。程序其他部分的空格都是为了易于阅读而存在的,即使可去掉程序本身依旧能够正常执行,只是增加了阅读困难。编程题1.编写一个程序,使用printf在屏幕上显示下面的图形:    *   *   ** * ** *答:1#include23intmain(void)4{5printf("*\n");6printf("*\n");7printf("*\n");8printf("**\n");9printf("**\n");10printf("*\n");1112return0;13}  2.编写一个计算球体体积的程序,其中球体半径为10m,参考公式v=4/3πr ³。注意,分数4/3应写为4.0f/3.0f。(如果分数写成4/3会产生什么结果?)提示:C语言没有指数运算符,所以需要对r自乘两次来计算r ³。答:1#include2/*定义名为PI和SCALE_FACTOR的宏*/3#definePI3.14f4#defineSCALE_FACTOR4.0f/3.0f56intmain(void)7{89/*声明变量并对其初始化,r是半径,volume为计算结果,r_3是r的立方结果*/10floatr=10.0f;11floatvolume=1.0f;12floatr_3=0.0f;1314/*计算半径为10m的球体体积*/15r_3=r*r*r;16volume=SCALE_FACTOR*PI*r_3;1718/*显示结果*/19printf("Resultis:%f\n",volume);2021return0;22} 如果把分数4.0f/3.0f编程4/3,则会导致计算结果出现错误,因为4/3的结果是1,而不是1.33333333。C语言中整数相除会舍掉后面的小数。3.修改上题中的程序,使用户可以自行录入球体的半径。答:1#include2/*定义名为PI和SCALE_FACTOR的宏*/3#definePI3.14f4#defineSCALE_FACTOR4.0f/3.0f56intmain(void)7{89/*声明变量并对其初始化,r是半径,volume为计算结果,r_3是r的立方结果*/10floatr=1.0f;11floatvolume=1.0f;12floatr_3=0.0f;1314/*输入球体半径,注意变量r前面要有&符号*/15printf("Enternumber:");16scanf("%f",&r);1718/*计算半径为10m的球体体积*/19r_3=r*r*r;20volume=SCALE_FACTOR*PI*r_3;2122printf("Resultis:%f\n",volume);2324return0;25} 4.编写一个程序,要求用户输入一个美元数量,然后显示出增加5%税率后的相应金额。格式如下所示:Enteranamount:100.00Withtaxadded:$105.00答:1#include23intmain(void)4{5/*声明变量money和taxed_money并初始化,前者表示金额,后者表示税后的金额*/6floatmoney=0.0f;7floattaxed_money=0.0f;89/*金额录入*/10printf("Enteranamount:");11scanf("%f",&money);1213/*计算税后的金额*/14taxed_money=money*1.05;1516/*显示结果,使用.2f是因为题目中税后的金额只保留了两位小数*/17printf("Withtaxadded:$%.2f\n",taxed_money);1819return0;20} 5.编写要求用户输入x的值,然后显示如下多项式的值: 3x5+2x4-5x3-x2+7x-6 提示:C语言没有指数运算符,所以需要对x进行自乘来计算其幂。(例如,x*x*x就是x的三次方。)答:1#include23intmain(void)4{5/*声明并初始化变量x和计算结果result,选择float型是因为题目中没有说用户不能输入小数*/6floatx=0.0f;7floatresult=0.0f;89/*用户输入x的值,然后将值写入变量x中*/10printf("Enterthevalueofx:");11scanf("%f",&x);1213/*计算公式的结果*/14result=3*x*x*x*x*x+2*x*x*x*x-5*x*x*x-x*x+7*x-6;1516printf("Theresultis:%f",result);1718return0;19}6.修改上题,用如下公式对多项式求值:((((3x+2)x-5)x-1)x+7)x-6注意,修改后的程序所需的乘法次数减少了。这种多项式求值方法即Horner法则(Horner'sRule)。答:1#include23intmain(void)4{5floatx=0.0f;6floatresult=0.0f;78printf("Enterthevalueofx:");9scanf("%f",&x);1011/*修改后的计算公式*/12result=((((3*x+2)*x-5)*x-1)*x+7)*x-6;1314printf("Theresultis:%f",result);1516return0;17}7.编写一个程序,要求用户输入一个美元数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款:Enteradollaramount:93$20bills:4$10bills:1 $5bills:0 $1bills:3答:1#include23intmain(void)4{5/*声明并初始化金额总数amount和美元面额变量*/6intamount=0;7intb20=0,b10=0,b05=0,b01=0;89printf("Enteradollaramount:");10scanf("%d",&amount);1112/*因为要求是用最少张数付款,所以先用总金额除以20,得到的所需20美元的数量,再将总金额减去所需20美元后除以10,得到所需10美元数量,以此类推求出全部结果*/13b20=amount/20;14amount=amount-20*b20;15b10=amount/10;16amount=amount-10*b10;17b05=amount/5;18amount=amount-5*b05;19b01=amount/1;2021/*显示结果*/22printf("\n$20bills:%d\n$10bills:%d\n$5bills:%d\n$1bills:%d\n",b20,b10,b05,b01);2324return0;25}8.编程计算第一、第二、第三个月还贷后剩余的贷款金额:Enteramountofloan:20000.00Enterinterestrate:6.0Entermonthlypayment:386.66Balanceremainingafterfirstpayment:$19713.34Balanceremainingaftersecondpayment:$19425.25Balanceremainingafterthirdpayment:$19135.71在显示每次还款后的余额时要保留两位小数。提示:每个月的贷款余额减去还款金额后,还需要加上贷款余额与月利率的乘积。月利率的计算方法是把用户输入的利率转换成百分数再除以12。答:1#include23intmain(void)4{5/*声明并初始化变量,loan是贷款金额,y_inter是年利率,m_inter月利率,m_pay是每月还款金额*/6floatloan=0.0f;7floaty_inter=0.0f;8floatm_inter=0.0f;9floatm_pay=0.0f;1011/*用户输入贷款金额、年利率、月还款数*/12printf("Enteramountofloan:");13scanf("%f",&loan);14printf("Enterinterestrate:");15scanf("%f",&y_inter);16printf("Entermonthlypayment:");17scanf("%f",&m_pay);1819/*计算月利率,加1是因为如果直接是月利率乘以贷款金额得到的是利息,利息还要在加上贷款金额。加1之后可以直接求出贷款金额加利息后的结果*/20m_inter=y_inter/100/12+1;2122/*求出第一个月还款之后的剩余金额*/23loan=loan*m_inter-m_pay;24printf("Balanceremainingafterfirstpayment:%.2f\n",loan);2526/*求出第二个月还款之后的剩余金额*/27loan=loan*m_inter-m_pay;28printf("Balanceremainingaftersecondpayment:%.2f\n",loan);2930/*求出第三个月还款之后的剩余金额*/31loan=loan*m_inter-m_pay;32printf("Balanceremainingafterthirdpayment:%.2f\n",loan);3334return0;35}36/*题目中还款是等额本息的方式,贷款20000,年利率6%,一共贷款5年*/  转载于:https://www.cnblogs.com/windrages/p/8179618.html -全文完-
本文档为【C语言程序设计:现代方法第二章全部习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
资教之佳
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:23
分类:互联网
上传时间:2023-06-19
浏览量:2