《全国计算机等级考试二级教程——C语言程序设计》课后习题详细答案学习资料.doc
《《全国计算机等级考试二级教程——C语言程序设计》课后习题详细答案学习资料.doc》由会员分享,可在线阅读,更多相关《《全国计算机等级考试二级教程——C语言程序设计》课后习题详细答案学习资料.doc(107页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。全国计算机等级考试二级教程C语言程序设计课后习题详细答案-全国计算机等级考试二级教程C语言程序设计习题分析与详细解答第一章程序设计基本概念习题分析与解答11【参考答案】EXE12【参考答案】1.C2.OBJ3.EXE13【参考答案】1顺序结构2选择结构3循环结构第二章C程序设计的初步知识习题分析与解答一、选择题21【参考答案】B)22【参考答案】D)23【参考答案】B)24【参考答案】A)25【参考答案】C)26【参考答案】A)27【参考答案】B)28【参考答案】B)29【参考答案】D)210【参考答案
2、】C)211【参考答案】B)212【参考答案】B)213【参考答案】A)二、填空题214【参考答案】111212215【参考答案】14.224.2216【参考答案】123定义4执行217【参考答案】1关键字2用户标识符218【参考答案】1int2float3double219【参考答案】floata1=1.0,a2=1.0;或floata1=1,a2=1;(系统将自动把1转换为1.0)220【参考答案】存储单元221【参考答案】3.5222【参考答案】1a*b/c2a/c*b3b/c*a223【参考答案】把10赋给变量s224【参考答案】1位21位二进制数据(0或1)225【参考答案】1821
3、273011111114-128510000000226【参考答案】1327672-3276831000000000000000227【参考答案】1十2八3十六三、上机改错题228【分析与解答】第1行的错误:(1)include是一个程序行,因此在此行的最后不应当有分号(;)。第2行的错误:(1)main()是主函数的起始行,不是语句,因此最后不应当有分号(;)。(2)在同一行上的/*mainfunction*/显然是注释;C语言规定:注释由/*开头,由*/结束,但在*号和/之间不得插入任何空格,而在此处“/*”和“*/”之间存在空格,因此,/*mainfunction*/的写法是错误的,而应
4、写成:/*mainfunction*/。第3行的错误:(1)在主函数的起始行main()的后面是函数体,函数体由左花括号(开始。但在函数体的第一行:float的前面缺少了左花括号(。(2)在同一行上的/*/*risradius*/,/*sisareaofcircular*/*/显然是注释;C语言规定:注释由/*开头,由*/结束,并且开头的/*将去找最近的*/去配对,因此在/*/*risradius*/中,第一个/*与radius后的那个*/配上了对,结果紧跟在后面的那个逗号(,)落在了注释的外面,而构成了一个多余符号,为此,在编译时将报告“语法错”。/*sisareaofcircular*/*
5、/中第一个*/就结束了注释,第一个*/就成了多余的了。第6行的错误:(1)printf(%fn,s)应当是一条输出语句,但在最后缺少了一个分号。(2)printf(%fn,s);是程序的最后一条语句,程序应当结束;但缺少了程序体结束所需的右花括号();此右花括号可以放在printf(%fn,s);的后面,也可以放在printf(%fn,s);的下一行上。227【分析与解答】第2行的错误:在main的后面缺少一对圆括号。第4行的错误:在c=4.0的后面缺少分号。第6行的错误:在printf(%fn,v)的后面缺少分号。第三章顺序结构习题分析与解答一、选择题(单选题)3.1【参考答案】C)3.2【
6、参考答案】C)3.3【参考答案】D)3.4【参考答案】C)3.5【参考答案】D)3.6【参考答案】B)3.7【参考答案】C)3.8【参考答案】D)3.9【参考答案】A)3.10【参考答案】B)3.11【参考答案】C)3.12【参考答案】D)3.13【参考答案】D)3.14【参考答案】A)3.15【参考答案】C)3.16【参考答案】C)3.17【参考答案】C)3.18【参考答案】D)把D的答案修改为:scanf(“%8f”,&c);3.19【参考答案】C)3.20【参考答案】B)二、填空题3.21【参考答案】(1)-200,2500(2)i=-200,j=2500(3)i=-200j=25003
7、.22【参考答案】11220303.23【参考答案】1一条语句2分号(或;)3.24【参考答案】分号(;)3.25【参考答案】1:10025.811.892342:10025.811.892343:10025.811.892343.26【参考答案】x=127,x=127,x=177,x=7f,x=1273.27【参考答案】x=127,x=127,x=127,x=000127,x=%06d3.28【参考答案】a=513.789215,a=513.79,a=513.78921500,a=513.78921500三、编程题和改错题3.29【分析与解答】(1)主函数名main后应有一对圆括号。(2)第
8、三行的printf语句用以提示输入,但是原样输出的字符串没有用双引号括起来;另外,从输入的形式看,输入的数据紧跟在提示之后,因此,printf格式串中最后不应该有换行符n。(3)因为输入项a、b、c从定义和计算结果来看都是double类型,因此,第四行scanf语句格式串中的格式说明不应当用%d而应当用%lf;且每一个变量之前应该加地址运算符&。(4)第七行的printf语句中应当把%d都改成%lf或%f;按输出要求在格式串中应添加相应的原样输出的字符;因为下一个printf的输出从新的一行开始,因此在本输出语句的格式串的最后应当加换行符n。(5)第八行的printf语句中应当把格式串整理合并
9、放在输出项的前面,输出项放在后面,%d都改成%lf或%f;中间的n删去。(6)请同学们自己写出修改后的程序,并上机调试。3.30【分析与解答】(1)分析:可用算术式56060把分钟换算成小时和分钟,商数就是小时数,余数就是分钟数。(2)确定变量的名字和定义变量的类型:在程序中把小时数放在变量h中,把分钟数放在变量m中。这两个变量的类型可以是整型(本题中采用整型),也可以是实型。(3)确定所用算法:求56060的商数,在C语言中可以用整除的算法,语句是h=560/60;。求余数可用求余运算符%:560%60,其值放入变量m中的语句是:m=560%60;。(4)设计输出格式。若输出的形式定为:小时
10、:分钟,则按此形式设计输出语句。(5)把以上内容放在主函数的一对花括号中。(6)编写程序如下:main()inth,m;h=560/60;m=560%60;printf(Theresult:%3d:%3dn,h,m);运行结果是:Theresult:9:203.31【分析与解答】(1)确定变量的名字和定义变量的类型。若用a存放1500,用b存放350;用q存放商数,用r存放余数,所有变量应定义成int类型。(2)设计输入语句从终端输入1500和350;在输入语句之前,应当设计一个输出语句,用以提示输入。(3)可用整除求商数,结果放在变量q中。可用求余运算符%求两数之余数,结果放在变量r中。(4
11、)设计输出语句。输出a、b、q、r。(5)把以上内容放在主函数的一对花括号中。本题的程序与3.30相似,请大家参考上题并根据本题的解释自己编程,并上机调试。3.32【分析与解答】(1)定义4个双精度变量a、b、c和ave,变量a、b、c分别存放读入的3个双精度数,ave存放它们的平均值。(2)设计输入语句,以及在此之前用于提示输入的(printf)语句。(3)设计求平均值的算法,把所求得的平均值放入变量ave中。(4)设计把变量ave中的数,从小数点后第二位数进行四舍五入的算法。现举例说明:若ave中的数为123.4644,为了保留此值小数点后一位,可用表达式:(int)(123.4644*1
12、0)/10.0;依次推算,为了保留此值小数点后二位,可用表达式:(int)(123.4644*100)/100.0;其他依此类推。(5)若要求对小数点后第二位数进行四舍五入,则可对原数加0.05后再进行以上运算。如要求保留123.4644小数点后一位且对第二位数进行四舍五入,可用表达式:(int)(123.467+0.05)*10)/10.0。注意:分母一定要用实数10.0而不能用整数10,否则就变成整除了;若要求保留123.4644小数点后两位且对第三位数进行四舍五入,可用表达式:(int)(123.467+0.005)*100)/100.0;其他依此类推。(6)设计输出语句。输出a、b、c
13、和ave。(7)把以上内容放在主函数的一对花括号中。(8)编写程序如下:main()doublea,b,c,ave;printf(Entera,b,c:);scanf(%lf%lf%lf,&a,&b,&c);ave=(a+b+c)/3;printf(ave=%fn,ave);/*用以比较四舍五入前后的数据*/ave=(int)(ave+0.05)*10)/10.0;/*上句也可写成ave=(int)(ave*10+0.5)/10.0;*/printf(a=%f,b=%f,c=%f,ave=%fn,a,b,c,ave);3.33【分析与解答】(1)关于对变量中的数进行交换的算法请参考3.7题中的
14、解释和教程中有关的例题。(2)定义4个整型变量a、b、c和t,变量a、b、c分别存放读入的3个整数,t用作临时存储单元。(3)设计输入语句,以及在此之前用于提示输入的(printf)语句。(4)输出a、b、c中的值,以便于比较。(5)交换的步骤如下:把c中的值赋给t。把b中的值赋给c。把a中的值赋给b。把t中的值赋给a。经过以上步骤,已按要求进行了交换。(6)输出a、b、c中的值。(7)编写程序如下:main()inta,b,c,t;printf(Entera,b,c:n);scanf(%d%d%d,&a,&b,&c);printf(1)a=%d,b=%d,c=%dn,a,b,c);t=c;c
15、=b;b=a;a=t;printf(2)a=%d,b=%d,c=%dn,a,b,c);第四章选择结构习题分析与解答一、选择题4.1【参考答案】A)4.2【参考答案】B)4.3【参考答案】A)4.4【参考答案】D)4.5【参考答案】C)4.6【参考答案】A)4.7【参考答案】B)4.8【参考答案】C)4.9【参考答案】D)4.10【参考答案】D)二、填空题4.11【参考答案】1非零2零4.12【参考答案】、=、=、!KG-*2=4.13【参考答案】1!2&3JB1|JB1|4.14【参考答案】1:!KG-*2(逻辑非)2:、=(小于、大于、小于等于、大于等于)3:=、!KG-*2=(等于、不等)
16、4:&(逻辑与)5:JB1|JB1|(逻辑或)。4.15【参考答案】!4.16【参考答案】1a=b或a1|xJB1|44.17【参考答案】14.18【参考答案】1xm0)JB1|JB1|(m1=m0&d1=d0)age=y1-y0;elseage=y1-y0-1;读者可以参考以上语句写出程序,也可以根据分析写出与此形式不同的语句和程序。4.23【分析与解答】(1)若输入的整数a是奇数,输出:oddnumber,是偶数输出:evennumber。(2)若一个a是偶数,它就能被2除尽,即a%2=0,输出evennumber;若是奇数,它就不能被2除尽,即a%2!KG-*2=0,输出oddnumbe
17、r。读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。4.24【分析与解答】本题的主要算法是从3个数中找出最大的那个数。假定始终把最大的数放在变量max中。(1)假定a中的数最大,把a赋给max。(2)用b去和max比较,若b大于max,则把b赋给max;若不大于max,则什么也不做。(3)用c去和max比较,若c大于max,则把c赋给max;若不大于max,则什么也不做。(4)经过以上操作,max中已放入了a、b、c三个数中的最大数,输出max即可。读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。4.25【分析与解答】(1)本题已给出了非常明确的条件,只要写
18、出正确的条件判断语句就可基本完成程序的编写。(2)由给出的函数可知,只有x的值在规定的范围内时,才求出y的值,因此程序应当对输入的x进行判断,若超过范围就不求y的值。(3)现以使用ifCD#*2else语句为例写出程序供参考。main()intx,y;printf(Enterx:);scanf(%d,&x);if(x-5&x10)if(x=0)y=x-1;elseif(x0)y=x+1;elseif(x-5)y=x;printf(x=%dy=%dn,x,y);printf(*END*nn);第五章循环结构习题分析与解答一、选择题(单选题)5.1【参考答案】D)5.2【参考答案】C)5.3【参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机等级考试二级教程C语言程序设计 全国 计算机等级考试 二级 教程 语言程序设计 课后 习题 详细 答案 学习 资料
限制150内