热门课程专业
>> 当前位置:北京金同方教育->计算机等级考试->计算机二级考试
时间:2008-5-15 8:24:44 来源:北京金同方教育 作者: 编辑: 【关闭


高等出版社二级C语言课后答案


《全国计算机等级考试二级教程——C语言程序设计》
习题分析与解答(一)
第一章   程序设计基本概念习题分析与解答
1.1   【参考答案】  .EXE
1.2   【参考答案】  [1] .C  [2] .OBJ  [3] .EXE
1.3    【参考答案】  [1] 顺序结构  [2] 选择结构  [3] 循环结构

第二章  C程序设计的初步知识习题分析与解答
一、 选择题
2.1   【参考答案】  B)
2.2   【参考答案】  D)
2.3   【参考答案】  B)
2.4   【参考答案】  A)
2.5    参考答案】  C)
2.6   【参考答案】  A)
2.7   【参考答案】  B)
2.8   【参考答案】  B)
2.9   【参考答案】  D)
2.10   【参考答案】  C)
2.11   【参考答案】  B)
2.12   【参考答案】  B)
2.13   【参考答案】  A)

二、 填空题
2.14   【参考答案】  [1] 11  [2] 12
2.15   【参考答案】  [1] 4.2  [2] 4.2
2.16   【参考答案】  [1] {  [2] }  [3] 定义  [4] 执行
2.17   【参考答案】  [1] 关键字  [2] 用户标识符
2.18   【参考答案】  [1] int  [2] float  [3] double
2.19   【参考答案】  float  a1=10, a2=10;
或float  a1=1, a2=1;(系统将自动把1转换为10)
2.20   【参考答案】  存储单元

2.21   【参考答案】  3.5
2.22   【参考答案】  [1] a*b/c  [2] a/c*b  [3] b/c*a
2.23   【参考答案】  把10赋给变量s
2.24   【参考答案】  [1] 位  [2] 0或1
2.25   【参考答案】  [1] 8  [2] 127  [3] -128  [4] 11111111
2.26   【参考答案】  [1] 32767  [2] -32768  [3] 1111111111111111
2.27   【参考答案】  [1] 十  [2] 八  [3] 十六

三、 上机改错题
2
28  【分析与解答】  
1行的错误:
(1) include
是一个程序行,因此在此行的最后不应当有分号(;)
(2) include
程序行中后面的stdio.h是一个文件名,按规定,文件名应当放在一对双引号(″ ″)内,或放在一对尖括号(< >)内。

2行的错误:
(1) main()
是主函数的起始行,不是语句,因此最后不应当有分号(;)
(2)
在同一行上的/  *  main function  *  / 显然是注释;C语言规定:注释由/*开头,由*/结束,但在*号和/之间不得插入任何空格,而在此处“/  *”“/  *”之间存在空格,因此,/  *  main function  *  /的写法式是错误的,而应写成:/*  main function  */

3行的错误:
(1)
在主函数的起始行main()的后面是函数体,函数体由左花括号({)开始。但在函数体的第一行:float的前面缺少了左花括号({)
(2)
在同一行上的/* /*r is radius*/, /* s is area of circular*/ */ 显然是注释;C语言规定:注释由/*开头,由*/结束,并且开头的/*将去找最近的*/去配对,因此在/* /*r is radius*/中,第一个/*与最后的那个*/配上了对,结果紧跟在后面的那个逗号()落在了注释的外面,而构成了一个多余符号,为此,在编译时将报告语法错

6行的错误:
(1) printf(″%f
[KG-*3]n″,s)应当是一条输出语句,但在最后缺少了一个分号。
(2) printf(″%f
[KG-*3]n″,s);是程序的最后一条语句,程序应当结束;但缺少了程序体结束所需的右花括号(});此右花括号可以放在printf(″%f [KG-*3]n″,s);的后面,也可以放在printf(″%f [KG-*3]n″,s);的下一行上。

2
27  【分析与解答】
1行的错误:在include行中的文件名应该是stdio.h,而不是stdio.a
2行的错误:在main的后面缺少一对圆括号。
4行的错误:在c=40的后面缺少分号。
6行的错误:在printf(″%f \〖KG-*3n″,v)的后面缺少分号。

《全国计算机等级考试二级教程——C语言程序设计》习题分析与解答(二)
  
第三章  顺序结构习题分析与解答
一、选择题  (单选题)
3.1  
【参考答案】      C)
3.2  
【参考答案】      C)
3.3  
【参考答案】      D)
3.4  
【参考答案】      C)
3.5
【参考答案】      D)
3.6  
【参考答案】      B)
3.7
【参考答案】      C)
3.8  
【参考答案】      C)
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)
3.19  
【参考答案】      C)
3.20  
【参考答案】      B)
二、 填空题
3.21  
【参考答案】      
(1) -200,2500    (2) i=-200,j=2500
(3) i=-200
j=2500
3.22  
【参考答案】      1 12  2 0  3 0
3.23  
【参考答案】      1 一条语句  2 分号(或;)
3.24  
【参考答案】      分号()
3.25
【参考答案】      
1]:100   25.82   1.89234
2]: 100 <回车符>
25.82 <
回车符>
1.89234 <
回车符>
3]:100  <制表符> 25.82 <制表符>  1.89234
3.26  
【参考答案】      x=127, x=   127, x=   177,x=      7f, x=   127
3.27  
【参考答案】      x=127, x=127   , x=127   ,x= 000127, x=%06d

3.28  【参考答案】      a=513.789215,a=  513.79,a=  513.78921500,a=  513.78921500

三、 编程题和改错题
3.29  【分析与解答】      
(1) 主函数名main后应有一对圆括号。
(2) 变量定义语句中,v的前面缺逗号。
(3) 第三行的printf语句用以提示输入,但是原样输出的字符串没有用双引号括起来;另外,从输入的形式看,输入的数据紧跟在提示之后,因此,printf格式串中最后不应该有换行符——\n。
(4) 因为输入项a、b、c从定义和计算结果来看都是double类型,因此,第四行scanf语句格式串中的格式说明不应当用%d而应当用%lf;且每一个变量之前应该加地址运算符&。
(5) 第七行的printf语句中应当把%d都改成%lf或%f;按输出要求在格式串中应添加相应的原样输出的字符;因为下一个printf的输出从新的一行开始,因此在本输出语句的格式串的最后应当加换行符——\n。
(6) 第八行的printf语句中应当把格式串整理合并放在输出项的前面,输出项放在后面,%d都改成%lf或%f;中间的\n删去。
(7) 请读者自己写出修改后的程序,并上机调试。

3.30 【分析与解答】      
(1) 分析:可用算术式560÷60把分钟换算成小时和分钟,商数就是小时数,余数就是分钟数。
(2) 确定变量的名字和定义变量的类型:在程序中把小时数放在变量h中,把分钟数放在变量m中。这两个变量的类型可以是整型(本题中采用整型),也可以是实型。
(3) 确定所用算法:求〖SX()560〖〗60〖SX〗〗的商数,在C语言中可以用整除的算法,语句是h=560/60;。求余数可用求余运算符 %:560%60,其值放入变量m中的语句是:m=560%60;。(4) 设计输出格式。若输出的形式定为:小时:分钟,则按此形式设计输出语句。
(5) 把以上内容放在主函数的一对花括号中。
(6) 编写程序如下:
        main()
{    int   h, m;
     h=560/60;
     m=560%60;
     printf(″The result:  %3d : %3d\n″, h,m);  
}  
运行结果是:

      The result:    9 :  20

3.31  【分析与解答】
(1) 确定变量的名字和定义变量的类型。若用a存放1500,用b存放350;用q存放商数,用r存放余数,所有变量应定义成int类型。
(2) 设计输入语句从终端输入1500和350;在输入语句之前,应当设计一个输出语句,用以提示输入。
(3) 可用整除求商数,结果放在变量q中。可用求余运算符%求两数之余数,结果放在变量r中。
(4) 设计输出语句。输出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*10)/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和ave。
(7) 把以上内容放在主函数的一对花括号中。
(8) 编写程序如下:
main()
{    double  a,b,c,ave;
printf(″Enter a ,b ,c : ″);
scanf(″%lf%lf%lf″, &a, &b, &c );
ave=(a+b+c)/3;
printf(″ave=%f\n″, ave);    /*用以比较四舍五入前后的数据*/
ave=(int)((ave+0.05)*10)/10.0;
printf(″a=%f, b=%f, c=%f, ave=%f\n″, a,b,c,ave);  
}  
3.33  【分析与解答】      
(1) 关于对变量中的数进行交换的算法请参考3.7题中的解释和《教程》中有关的例题。
(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()
{    int   a, b, c, t;
printf(″Enter  a, b, c :\n″);
scanf(″%d%d%d″,&a,&b,&c);
printf(″(1) a=%d,b=%d,c=%d\n″,a,b ,c);
t=c; c=b; b=a; a=t;
printf(″(2) a=%d,b=%d,c=%d\n″,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] &&  [3] [JB>1|][JB>1|]
4.14【参考答案】        [1]:![KG-*2](逻辑非)
  [2]:<、>、<=、>=(小于、大于、小于等于、大于等于)
[3]:==、![KG-*2]=(等于、不等) 
[4]:&&(逻辑与)  [5]:[JB>1|][JB>1|](逻辑或)。  
4.15  【参考答案】      !
4.16 【参考答案】 [1] a=b 或 a<c[2] [JB>1|]x[JB>1|]>4
4.17 【参考答案】      1
4.18 【参考答案】      [1] x<=0  [2] 1
4.19  【参考答案】      [1] 3  [2] 2  [3] 2
4.20  【参考答案】      *#

三、 编程题
4.21  【分析与解答】      相关内容请参考《教程》4.2节和4.4节。
(1) 改写如下:
switch(a/10)
{   default  : m=5;  break;
case  0 : case  1 : case  2 : m=1; break;
case  3 :  m=2; break;
case  4 :  m=3; break;
case  5 :  m=4; break;  
};  
(2) 本题中对a的判断条件有一定的规律可寻;关键是,在switch语句后的表达式中利用了a/10,从而简化了case标号。
4.22  【分析与解答】      
编写本题的程序,首先要解决如何计算学生当前的年龄(设存放实足年龄的变量是age)。
(1) 如果当前的月份大于生日的月份,则学生的实足年龄age=y1-y0。
(2) 如果当前的月份等于生日的月份,就要看日数,当前的日数大于或等于生日的日数,则学生的实足年龄age=y1-y0。
(3) 如果不满足以上的条件,就可断定当前的日期没有超过生日日期,就是说学生的年龄应当是age=y1-y0-1。
以上3条,用C语言可以描述如下:
      if((m1>m0)[JB>1|][JB>1|](m1==m0&&d1>=d0))  age=y1-y0;
      else  age=y1-y0-1;
读者可以参考以上语句写出程序,也可以根据分析写出与此形式不同的语句和程序。

4.23【分析与解答】      
(1) 若输入的整数a是奇数,输出 dd number,是偶数输出:even number。
(2) 若一个a是偶数,它就能被2除尽,即a%2==0,输出even number;若是奇数,
它就不能被2除尽,即a%2!〖KG-*2〗=0,输出odd number。
读者可以参考以上给出的算法,写出相应的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) 本题已给出了非常明确的条件,只要写出正确的条件判断语句就可基本完成程序的编写。
(2) 由给出的函数可知,只有x的值在规定的范围内时,才求出y的值,因此程序应当对输入的x进行判断,若超过范围就不求y的值。
(3) 现以使用if[CD#*2]else语句为例写出程序供参考。
     main()
{    int  x,y;
printf(″Enter  x : ″);  scanf(″%d″, &x);
if(x>-5&&x<10)
{    if(x==0)  y=x-1;
else if(x<10 && x>0 )  y=x+1;
else if(x<0  && x>-5)  y=x;
printf(″x=%d  y=%d\n″, x,y);  
}
printf(″***END***\n\n″);  
}  

信息链接
| 学校文化 | 课程专业 | 学员就业 | 团体培训 | 教育新闻| 分校 | 招聘与推荐  | IT就业| 学习园地|在线咨询 |
总校电话:010-82503391 教学质量监督:010-62510058
总校地址:北京市海淀区中关村大街49号大华科技商厦B318室
就业部:010-82503392 信息产业部:京ICP证05053143号
网站技术支持:金同方计算机学校 E-mail:bjjtfedu@163.com 邮编:100081 Copyright@2006 中国北京金同方电脑培训学校版权所有