1、国家二级 C语言机试(选择题)模拟试卷 92及答案与解析 一、选择题 1 在结构化方法中,用数据流程图 (DFD)作为描述工具的软件开发阶段是 ( )。 ( A)逻辑设计 ( B)需求分析 ( C)详细设计 ( D)物理设计 2 对序线性表 (23, 29, 34, 55, 60, 70, 78)用二分法查找值为 60的元素时,需要比较次数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 3 下列描述中,正确的是 ( )。 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有根结点的二叉树是线性结构 4 开发大型软
2、件时,产生困难的根本原因是 ( )。 ( A)大型系统的复杂性 ( B)人员知识不足 ( C)客观世界千变万化 ( D)时间紧、任务重 5 两个或两个以上的模块之间关联的紧密程度称为 ( )。 ( A)耦合度 ( B)内聚度 ( C)复杂度 ( D)连接度 6 下列关于线性表的叙述中,不正确的是 ( )。 ( A)线性表可以是空表 ( B)线性表是一种线性结构 ( C)线性表的所有结点有且 仅有一个前件和后件 ( D)线性表是由 n个元素组成的一个有限序列 7 设有如下关系表: 则下列操作正确的是( )。 ( A) T=R S ( B) T=RS ( C) T=RS ( D) T=R S 8
3、以下描述中,不是线性表顺序存储结构特征的是 ( )。 ( A)可随机访问 ( B)需要连续的存储空间 ( C)不便于插入和删除 ( D)逻辑相邻的数据物理位置上不相邻 9 在三级模式之间引入两层映像,其主要功能之一是 ( )。 ( A)使数据与程序具有较高的独立性 ( B)使系统具有较高的通道能力 ( C)保持数据与程序的一致性 ( D)提高存储空间的利用率 10 下列方法中,属于白盒法设计测试用例的方法的是 ( )。 ( A)错误推测 ( B)因果图 ( C)基本路径测试 ( D)边界值分析 11 在 C语言中,以下说法不正确的是 ( )。 ( A)在 C程序中,整数和实数都能被准确无误地表
4、示出来 ( B)在 C程序中,任何一个变量名都代表存储器中的一个位置 ( C)静态变量的生存期与整个程序的运行期相同 ( D) C语言中,任何变量都必须先声明才能进行引用 12 以下关于 C语言数据类 型的叙述中正确的是 ( )。 ( A) C基本数据类型包括:分为整型、实型、浮点型、字符型四种 ( B)实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式 ( C)若要处理如 “人员信息 等含有不同类型的相关数据,应自定义结构体类型 ( D)若只处理 “真 ”和 “假 ”两种逻辑值,应使用逻辑类型 13 以下标识符不是关键字的是 ( )。 ( A) break (
5、B) char ( C) Switch ( D) return 14 下列选项中,不能作为合法常量的是 ( )。 ( A) 1 234e04 ( B) 1 234e0 4 ( C) 1 234e+4 ( D) 1 234e0 15 有以下程序: #include stdio h main() while(getchar()!= n); 以下叙述中正确的是 ( )。 ( A)此 while语句将无限循环 ( B) getchar()不可以出现在 while语句的条件表达式中 ( C)当执行此 while语句时,只有按回车键程序才能继续执行 ( D)当执行此 while语句时,按任意键程序就能继续
6、执行 16 下列叙述中正确的是 ( )。 ( A)调用 printf()函数时,必须要有输出项 ( B)使用 putchar()函数时,必须在之前包含头文件 stdio h ( C)在 C语言中,整数可以以二进制、八进制或十六进制的形式输出 ( D)调用 getchar()函数读入字符时,可以从键盘上输入字符所对应的 ASCII码 17 执行以下程序段后, w的值为 ( )。 int w=A, x=14, y=15; w=(x y) float c; art; ( A) arr所占的内存长度等于成员 c的长度 ( B) art的地址和它的各成员的地址都是同一地址 ( C) air可以作为函数参
7、数 ( D)不能在定义 arr时对它初始化 39 若 x=4, y=5,则 x&y的结果是 ( )。 ( A) 0 ( B) 4 ( C) 3 ( D) 5 40 下列关于 C语言数据文件的叙述中正确的是 ( )。 ( A)文件由 ASCII码字符序列组成, C语言只能读写文本文件 ( B)文件由二进制数据序列组成, C语言只能读写二进制文件 ( C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 ( D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 国家二级 C语言机试(选择题)模拟试卷 92答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 软件
8、开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中,需求分析阶段常用的工具是数据流图和数据字典。 2 【正 确答案】 C 【试题解析】 根据二分法查找法需要两次: 首先将 60与表中间的元素 55进行比较,由于 60大于 55,所以在线性表的后半部分查找。 第二次比较的元素是后半部分的中间元素,将 60与表中间的元素 70进行比较,由于 60小于 70,所以在线性表的前半部分查找。 第三次比较的元素是前半部分的中间元素,即 60,这时两者相等,即查找成功。 3 【正确答案】 A 【试题解析】 根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与
9、非线性结构。如果一个非空的数据结构满足 下列两个条件: 有且只有一个根结点; 每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 4 【正确答案】 A 【试题解析】 随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的 “软件危机 ”。 5 【正确答案】 A 【试题解析】 耦合度是模块间互相连接的紧密程度的度量:内聚度是一 个模块内部各个元素间彼此结合的紧密程度的度量。 6 【正确答案
10、】 C 【试题解析】 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C是错误的。 7 【正确答案】 C 【试题解析】 T就是关系 R中有的,同时 S中也有的有序组 (4、 5、 6),即交运算 ( )。 8 【正确答案】 D 【试题解析】 线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的 元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。 9 【正确答案】 A 【试题解析
11、】 数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。 10 【正确答案】 C 【试题解析】 白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。 11 【正确答案】 A 【试题解析】 此题考查 C语言的基本概念。变量的实质就是在内存中占据一 定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。 12 【正确答案】 C 【试题解析】 C基本数据类型包括:分为整型、实型、枚举型、字符型四种,实型就是浮点型,实型数据只有十进制,没有 2
12、、 8、 16进制表达,在 C语言中没有定义逻辑类型,而是一般用 0代表假,用非零代表真。 13 【正确答案】 C 【试题解析】 此题考查标识符和关键字的概念。需要注意的是 C语言是区分大小写的, “switch”是关键字,但 “Switch”不是关键字。 14 【正确答案】 B 【试题解析】 用指数形式表示的实型常量需注意两点: e或 E后面的指数必须是整数; 指数必须是不超过数据表示范围的正负整数,并且在 e或 E前必须有数字。 15 【正确答案】 C 【试题解析】 根据程序顺序执行的次序,当程序执行到 while这条语句,根据while语句中的结束循环的条件是 “输入回车键时,结束循环
13、”,所以当按回车键后,程序才执行 while语句的下一条语句。 16 【正确答案】 B 【试题解析】 选项 A,若 printf函 数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项 C,在 C语言中,整数可以以十进制、八进制或十六进制的形式输出;选项 D, getchar函数是从标准输入设备读取一个字符。 17 【正确答案】 C 【试题解析】 字符变量 w的初值为字符 “A”,其 ASCH码值为 65,字符 “at”的 ASCII码值为 97,所以关系表达式 “w a”的值为 1:变量 x=14,变量 y=15,“xy”为
14、或, x、 y均为真,所以 xy的结果 1。因而逻辑表达 式 “(xy)&(w a)”的值为 1。 18 【正确答案】 D 【试题解析】 C语言规定,输出 long型数值的格式符为 1d。 19 【正确答案】 D 【试题解析】 本题考查 printf函数的格式。 “ 8x”表示以十六进制无符号形式输出整型数据。 “8”表示指定输出数据的宽度为 8位。 20 【正确答案】 C 【试题解析】 条件表达式的形式如下: “表达式 17表达式 2:表达式 3”。其含义为当 “表达式 1”的值为非零时,求出 “表达式 2”的值,此时 “表达式 2”的值就是整个条件表达式的 值;当 “表达式 1”的值为零时
15、,则求 “表达式 3”的值,这时 “表达式 3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式 “x-y”的值,若其值为非 0(可以是正数,也可以是负数 ),则再求表达式 “x+”的值,其值就是条件表达式的值:若表达式 “x-y”的值为 0,则再求表达式 “y+”的值,其值就是条件表达式的值。因此,本题的答案为选项 C。 21 【正确答案】 A 【试题解析】 C语言规定,赋值号的右边可以是一个赋值表达式,因此选项 C、选项 D正确;在选项 B中, a+是一个自加 1的表达式, a被重 新赋值,因此它是一个合法的赋值表达式;选项 A中, a+d是一个算术表达式,虽然最后有一个分号
16、,但这个表达式中没有赋值操作,因此它不是一条赋值语句。 22 【正确答案】 A 【试题解析】 此题考查的是编译预处理命令以及自加运算符。 “F(a+, b+)”先取 a和 b的值,参加运算,再把 a和 b的值分别加 1,所以 “F(a+, b+)=F(3,4)=3*4=12”。 23 【正确答案】 D 【试题解析】 本题考查 while表达式。 while(表达式 )中的表达式可以为任何合法的表达式,一般情况下为逻 辑、条件表达式,需要注意的是,当等号 (=)误写为赋值号 (=)时不会报错的,但是其值恒为 1。 24 【正确答案】 B 【试题解析】 本题考查 switch语句。因为 “a=6”
17、,所以 “a 2=0”,因此第一个switch语句,执行 “case0”,将 m加 1,遇到 break语句跳出 switch语句,输出 m值为 2。 25 【正确答案】 B 【试题解析】 由程序可知,函数 fun(int a, intb)是一个递归函数。所以当主函数中调用 “fun(4, 2)”时,其执行过程如下 “fun(4, 2)- fun(3, 1)- fun(2, 0)”,其返回值为 2。所以正确答案为选项 B。 26 【正确答案】 D 【试题解析】 本题考查字符常量的 4个知识点: 空格是一个字符常量,而且单引号中的空格不可以省略; 字符常量只能包含一个字符; 单引号中的大写字母和
18、小写字母代表的是不相同的字符常量; 所有的字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是 ASCII码值。 27 【正确答案】 B 【试题解析】 本题考查函数调用时的实参形式。这里有一个逗号运算的考查,(a, b)的运算结果为 b,因而只有一 个值,结合 func的调用形式,可以知道实参的个数只有 2个。 28 【正确答案】 D 【试题解析】 在程序中整型变量 n的初始值等于 2,整型变量 k的初始值等于1,在执行 while语句时,由于表达式 k的值大于 0为真,所以不再需要判断“n+”是否为真, “(k 0n+)”表达式的值为真。 “!(k 0n+)”表达式的值为假,所以 w
19、hile语句中的条件不满足,循环语句不会执行,变量 n的值也不会加 1,所在输出变量 k和 n的值是 1和 2。 29 【正确答案】 B 【试题解析】 本题考查对一维数组的赋 值。选项 B中, y5说明数组中有 5个元素,但却给它赋了 6个值,数组溢出所以是错误的。 30 【正确答案】 D 【试题解析】 本题考查通过指针引用数组元素。选项 A、 C没有这种引用形式;选项 B, (*a)+2与 *a+2相同,表示第一个元素的值加 2;选项 D, *(a+2)引用数组的第 3个元素。 31 【正确答案】 A 【试题解析】 本题考查两个概念。 用单引号括起来的一个字符常量只能存放一个字符; C语言中
20、没有字符串变量,只能用字符数组来存储字符串。选项 A中一个单引号内存放了若干个字符,是错误的 ;选项 B和选项 D中将一个字符串赋值给一个字符数组是允许的。 32 【正确答案】 A 【试题解析】 本题考查函数调用的参数传递。通过函数 abe的执行,将字符串中的字母 a去掉,保留剩下的,由于是通过指针调用,所以改变了字符串的结果。 33 【正确答案】 A 【试题解析】 本题考查的是取内容运算符 “*”和自加运算符 “+”的优先级问题。由于 “+”的优先级高于 “*”,所以题干中 “*str+!=e”,即 “*(str+)!=e”,当 str指向字符 “e”时, while循环的条件不成立 ,但
21、“str”已经进行了自加指向了字符“f”,所以 “*str”输出字符 “f”。 34 【正确答案】 A 【试题解析】 本题涉及字符数组和指针两个知识点: 在 C语言中,字符数组在存放字符串时会自动在末尾加上 “ 0”,所以题中数组 str有 11个元素; ptr指向数组 str的首地址, “ptr+10”是指向 “str10”, “*(ptr+10)”是引用 str10的值(即结束符 “ 0”)。 35 【正确答案】 B 【试题解析】 字符串比较不能用两个等号 (=)来进行比较,应使 用 “strcmp(s1,s2)”函数来比较。 “strcmp(s1, s2)”函数的功能是:当字符串 s1和
22、 s2相等时,返回值为 0,因此,当表达式 “!strcmp(s1, s2)=1”时,条件成立,执行后面的语句,输出 “they are Equal”。 36 【正确答案】 B 【试题解析】 本题主要考查结构体变量的定义与初始化。题目中定义了 complex类型的结构体变量 data1和 data2,并对 data1进行了初始化。可以用一个结构体变量的成员对另一个结构体变量的成员赋值。 37 【正确答案】 B 【试题解析】 本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函数 “prt(&a, &b, &c); ”,此函数中的输出语句 “printf(%d, d, d n”,+*x,
23、 +*y, *(z+); ”使得 a和 b的值均加 1,而 “*(z+)”由于先执行 “z+”,所以 c的值不变;第二次调用函数 “pn(&A&b, &c); ”使得 a和 b在上一次的基础上再各自加 l(因为形参和实参进行的是地址传递 ),而 c的值仍不变。 38 【正确答案】 C 【试题解析】 本题主要考查联合体的内存使用:联合体 所占用的内存空间为最长的成员所占用的空间, int占 2个字节, char占 1个字节, float占 4个字节,所以arr所占的内存长度等于成员 c的长度; arr的地址和它的各成员的地址都是同一地址;不能直接对 arr赋值,即不能在定义 arr时对它初始化; arr也不可以作为函数参数。 39 【正确答案】 B 【试题解析】 本题主要考查按位与运算的知识点。按位与是对两个运算量相应的位进行逻辑与, “&”的规则和逻辑与 “&”相同。 x=4的二进制为 00000100, y=5的二进制为 00000101, x&y=00000100,转化为十进制即为 4。 40 【正确答案】 D 【试题解析】 本题考查的是数据文件的有关概念。文件由数据流的形式组成,可以按数据存放的形式分为二进制文件和文本文件, C语言既能读写文本文件,又能读写二进制文件。