1、第 1 章习 题 解 答 学习要点 完成主教材中的全部习题。 熟悉 C 语言程序设计考试的各种题型:选择题、程序填空题、阅读程序写出运行结果题、编程题等。 注意综合运用数据类型、程序结构和典型算法。1.1 习题 1 参考答案和解释1简答题(1)冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?【参考答案】 冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。运算器又称算术逻辑部件,简称 ALU,是计算机用来进行数据运算的部件。数据运算包括算术运算和逻辑运算。控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工 作的。存储器是计算机中
2、具有记忆能力的部件,用来存放程序或数据。输入设备是用来输入程序和数据的部件。输出设备正好与输入设备相反,是用来输出结果的部件。(2)简述计算机的工作原理。【参考答案】 计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。整个过程由控制器进行控制。(3)计算机软件系统分为哪几类?【参考答案】 软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系C 语言程序设计教程习题解答与实验指导2统软件和应用软件。系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。这类软件一般与具体
3、应用无关,是在系统一级上提供的服务。系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。另一类是面向用户的软件,如各种语言处理程序(像 BC、VC 等) 、实用程序、字处理程序等。应用软件是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须在操作系统的基础上运行。(4)什么叫软件?说明软件与硬件之间的相互关系。【参考答案】 软件是指计算机程序及有关程序的技术文档资料。两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。在不太严格情况下,认为程序就是软件。硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下
4、才能有效地工作。在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。从这个意义上说,软件是用户与机器的接口。2填空题(1)运算器通常又称为 ALU,是计算机用来进行数据运算的部件。数据运算包括算术 运算和 逻辑 运算。(2)目前计算机最常用的输入设备有 键盘 和 鼠标 。(3)计算机的 CPU 主要是由 控制器 和 运算器 构成的。(4)十进制的基数为 10 ,二进制的基数为 2 。(5)在 C 语言中,表示一个八进制数用前缀 0 标记,表示一个十六进制数用前缀 0x 或 0X
5、 标记。(6)机器数的三种表示形式是 原码 、 反码 和 补码 。(7)十进制数 23 和23 的 8 位二进制补码分别是 00010111 和 11101001 。(8)用 8 位二进制码表示有符号的定点整数,可表示的最大整数是 127 ,最小整数是 128 。3选择题(1)计算机工作时,内存储器用来存储( ) 。A程序和指令 B数据和信号C程序和数据 DASCII 码和数据【答案】 C。【解释】 计算机内存按所存信息的类别一般分为两大类,即程序和数据。程序是用来控制计算机完成某项任务的指令的集合,而数据是程序运行处理的对象。A 只说明是程序。B 和 D 只说明是数据。因为信号和 ASCII
6、 码均为数据,所以选 C。(2)语言编译程序若按软件分类则是属于( ) 。第 1 章 习题解答3A系统软件 B应用软件C操作系统 D数据库管理系统【答案】 A。【解释】 软件根据其用途分为两大类:系统软件和应用软件。各种语言的编译程序都是属于系统软件。C 和 D 都是具体的软件,均属于系统软件。所以选 A。(3)在计算机内一切信息的存取、传输和处理都是以( )形式进行的。AASCII 码 B二进制 C十进制 D十六进制【答案】 B。【解释】 计算机只能识别二进制数。所有的信息(包括指令和数据)都是以二进制形式来存放,也是以二进制形式来进行处理的。所以选 B。(4)十进制数 35 转换成二进制数
7、是( ) 。A100011 B0100011 C100110 D100101【答案】 A。【解释】 (35) 10 = (32)10 + (3)10 = (100000)2 + (11)2 = (100011)2,所以选 A。(5)十进制数 268 转换成十六进制数是( ) 。A10B B10C C10D D10E【答案】 B。【解释】 (268)10 = (256)10 + (12)10 = (100000000)2 + (1100)2 = (1 0000 1100)2 = (10C)16,所以选 B。(6)下列无符号整数中最大的数是( ) 。A(10100011) 2 B(FF) 16 C
8、(237) 8 D789【答案】 B。【解释】 (10100011)2 = (163)10 ,(FF) 16 = (65535)10 ,(237) 8 = (183)10 ,所以选B。(7)与二进制数 0.1 等值的十六进制小数为( ) 。A(0.2) 16 B(0.1) 16 C(0.4) 16 D(0.8) 16【答案】 D。【解释】 (0.1) 2 = (0.1000)10 = (0.8)16 ,所以选 D。(8)将 250 与 5 进行按位与的结果是( ) 。A0 B1 C(FF) 16 D(F0) 16【答案】 A。【解释】 (250) 10 ” C “,” D都不是【答案】 B。【
9、解释】 根据 C 语言的规定,在程序中所有的语句均必须由“;”结尾。所以选择 B。(12)标准 C 语言程序的文件名的后缀为( ) 。A.c B.cpp C.obj D.exeC 语言程序设计教程习题解答与实验指导8【答案】 A。【解释】 .c 是标准 C 语言程序文件名的后缀;.cpp 则是 C+程序文件名的后缀;.obj 是源程序经编译后所生成的目标文件的扩展名; .exe 则是源程序经编译、链接后所生成的执行文件的扩展名。所以选择 A。(13)C 语言程序经过编译以后生成的文件名的后缀为( ) 。A.c B.obj C.exe D.cpp【答案】 B。【解释】 C 语言源程序经编译后生成
10、目标( object)文件,其文件名后缀为.obj。所以选择 B。(14)C 语言程序经过链接以后生成的文件名的后缀为( ) 。A.c B.obj C.exe D.cpp【答案】 C。【解释】 C 语言源程序经链接后生成可执行( execute)文件,其文件名后缀为.exe。所以选择 C。(15)C 语言编译程序的首要工作是( ) 。A检查 C 语言程序的语法错误 B检查 C 语言程序的逻辑错误C检查程序的完整性 D生成目标文件【答案】 A。【解释】 C 语言编译程序的首要工作就是检查 C 语言程序中是否存在语法错误,如果有则给出错误的提示信息,如果没有则生成的目标文件(.obj) 。编译程序
11、对程序中的逻辑错误和程序的完整性是不检查的。所以选择 A。1.3 习题 3 参考答案和解释1填空题(1)在 C 语言中,基本数据类型主要有 整型 、 字符型 、 实型 三种。(2)根据 C 语言标识符的命名规则,标识符只能由 字母 、 数字 、 下划线 组成,而且第一个字符必须是 字母 或 下划线 。(3)C 语言中的常量分为 直接 常量和 符号 常量两种。定义 符号 常量需要使用预处理命令#define。(4)在 C 语言中,八进制整型常量以 0 作为前缀,十六进制整型常量以 0x或 0X 作为前缀。(5)在 C 语言中(以 16 位 PC 为例) ,一个 char 型数据在内存中所占的字节
12、数为1 ;一个 int 型数据在内存中所占的字节数为 2 。(6)在 C 语言中(以 16 位 PC 为例) ,一个 float 型数据在内存中所占的字节数为4 ;一个 double 型数据在内存中所占的字节数为 8 。(7)C 语言中,设一个 int 型数据在内存中占 2 个字节,则 int 型数据的取值范围为第 1 章 习题解答932768+32767 。(8)已知 int m=5, y=2;,则计算表达式 y+=y=m=y 后的 y 值是 16 。(9)语句:x+; +x; x = x + 1; x = l + x;,执行后都使变量 x 中的值增 1,请写出一条同一功能的赋值语句(不得与
13、列举的相同) x += 1; 。(10)若 a 为整型变量,则表达式“(a = 4 5, a2), a + 6”的值为 26 。(11)假设 m 是一个三位数,从左到右用 a, b, c 表示各位的数字,则从左到右各个数字是 bac 的三位数的表达式是 (m/10)%10100+m/10010+m%10 。2选择题(1)在 C 语言系统中,假设 int 类型数据占 2 个字节,则 double、long、unsigned int、char 类型数据所占字节数分别为( ) 。A8,2,4,1 B2,8 ,4,1 C4,2,8,1 D8,4,2,1【答案】 D。【解释】 C 语言系统中,如果 in
14、t 型数据占 2 字节,则说明该系统是 16 位的系统,此时 double 型数据占 8 字节,long 型数据占 4 字节,unsigned int 占 2 字节,char 型数据占 1 字节,所以选择 D。(2)下面四个选项中,均是不合法的用户标识符的选项是( ) 。AA P_0 do Bfloat la0 _ACba sizeof int D_123 temp int【答案】 C。【解释】 根据 C 语言中对标识符的规定: A 中的 A、P_O 是合法的,do 是关键字,非法;B 中 la0、_A 是合法的,float 是关键字,非法;C 中 ba 非法,因“”不是标识符中的有效字符,s
15、izeof 和 int 均是关键字,非法;D 中_123、temp 是合法的,int 是关键字,非法。故只有 C 全错,所以选择 C。(3)下面四个选项中,均是合法整型常量的选项是( ) 。A160 0xffff 011 B0xcdf 01a 0xeC01 986,012 0668 D0x48a 2e5 0x【答案】 A。【解释】 A 中 160 是十进制数, 0xffff 是十六进制数,011 是八进制数,均合法;B 中 01a 非法,因为 a 不是八进制数码;C 中 986,012 非法,不能包含“, ”,0668 非法,因为 8 不是八进制数码;D 中 0x 非法,因为后面没有有效的十六
16、进制数码。所以选择A。(4)下面四个选项中,均是不合法的浮点数的选项是( ) 。A160. 0.12 e3 B123 2e4.2 .e5C.18 123e4 0.0 De3 .234 1e3【答案】 B。【解释】 C 语言中的浮点数有两种形式,一种为十进制小数形式,一种为指数形式,其一般形式为 a E n ,a 为十进制数,n 为十进制整数,都不可省略。A 中 e3 非法,C 语言程序设计教程习题解答与实验指导10因为只有阶码 3 没有尾数,其余两数都是合法的浮点数;B 中 123 是整数,不是浮点数,2e4.2 阶码部分 4.2 是浮点数,不是整数,故是非法的,.e5 尾数部分不能只有小数点
17、,也是非法的;C 中的三个数均是合法的浮点数; D 中的.234 和 1e3 也是合法的,只有e3 非法。所以选择 B。(5)下面四个选项中,均是不合法的转义字符的选项是( ) 。A“ xf B1011 abC011 f Dabc 101 xlf 【答案】 B。【解释】 A 中均为合法的转义字符;B 中1011 的后面多于 3 位八进制数是非法的, 不能标识字符,是非法的,ab的后面漏掉了 x 是非法的; C 中011是合法的;D 中101是合法的;故都不合法的只有 B,所以选择 B。(6)下面四个选项中,均是正确的数值常量或字符常量的选项是( ) 。A0.0 0f 8.9e k = (+i)
18、 + (+i) + (i+);printf (“%d,%d“, k, i);A24,8 B21,8 C21,7 D24,7【答案】 B。【解释】 k=(+i)+(+i)+(i+)表达式中,“+“ 号在 i 前面的有两个,所以在计算 k之前,i 要先加两次 1,即 i 变为 7,然后再将 3 个 7 相加,使得 k 的值为 21,表达式中“+“号在 i 后面的有一个,所以得出 k 的值以后 i 又增 1 次变为 8。所以正确答案为B。(8)下面程序段输出结果是( ) 。short int i = 32769;printf (“%dn“, i);A32769 B32767 C32767 D输出不是确定的数【答案】 C。【解释】 因(32769) 10 = (1000 0000 0000 0001)2,所以 i 的值在内存中补码形式表示为 1000 0000 0000 0001,最高位是 1 表示负数,其表示的有符号数是(0111 1111 1111 1111)2,即十进制数32767。所以正确答案是 C。