二级C语言笔试-450
(总分96.5, 做题时间90分钟)
一、选择题
1. 
下列叙述中正确的是
   A) 算法的效率只与问题的规模有关,而与数据的存储结构无关
   B) 算法的时间复杂度是指执行算法所需要的计算工作量
   C) 数据的逻辑结构与存储结构是一一对应的
   D) 算法的时间复杂度与空间复杂度一定相关
    该问题分值: 2
答案:B
[解析] 根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系的,是独立于计算机的;数据的存储结构研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应的关系。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。
2. 
在软件开发中,下面的任务不属于设计阶段的是(    )。
   A) 数据结构设计    B) 给出系统模块结构
   C) 定义模块算法    D) 定义需求并建立系统模块
    该问题分值: 1
答案:D
[解析] 软件设计一般分为总体设计和详细设计两个阶段。总体设计的任务是确定软件的总体结构、子系统和模块的划分,确定模块间的接口和评价模块划分质量,并进行数据分析;详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。
3. 
按照“先进先出”组织数据的数据结构是(    )。
   A) 队列    B) 栈    C) 双向链表    D) 二叉树
    该问题分值: 2
答案:A
[解析] 队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”,先插入的元素先被删除,是按“先进先出”的原则组织数据的。
4. 
简单的交换排序方法是(    )。
   A) 快速排序    B) 选择排序
   C) 堆排序      D) 冒泡排序
    该问题分值: 2
答案:D
[解析] 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括
冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。
5. 
没有关系R和S,关系代数表达式为R-(R-S)表示的是
   A) RDS    B) R-S    C) RUS    D) R÷S
printf函数属于
    该问题分值: 2
答案:A
[解析] R-S表示属于R但不属于S,R-(R-S)表示属于R但不属于(R-S),即相当于R∩S。
6. 
在E-R图中,用来表示实体联系的图形是(    )。
   A.椭圆形    B.矩形
   C.菱形    D.三角形
    该问题分值: 1
答案:C
[解析] E-R图也即实体一联系图(Entity Relationship Diagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型,构成E-R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity):用矩形表示,矩形框内写明实体名;属性(Attribute):用椭圆形表示,并用无向边将其与相应的实体连接起来;联系(Relationship):用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。
7. 
用链表表示线性表的优点是(    )。
   A) 便于随机存取
   B) 花费的存储空间较顺序存储少
   C) 便于插入和删除操作
   D) 数据元素的物理顺序和逻辑顺序相同
    该问题分值: 1
答案:C
[解析] 在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费的存储空间要比顺序表还要多。在插入和删除数据元素时,只需要移动相应的记录指针即可。在链表中数据
的物理结构与逻辑结构不一定相同,因为是靠指针来实现对数据的指定的,所以不能进行随机存取。
8. 
对关系S和只进行集合运算,结果中既包含S中的所有元组也包含只中的所有元组,这样的集合运算称为(    )。
   A) 并运算    B) 交运算    C) 差运算    D) 积运算
    该问题分值: 1
答案:A
[解析] 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。
9. 
下列说法不正确的是(    )。
   A)一个C语言源程序可以由一个函数组成也可以由多个函数组成
   B)main()中的“()”是函数的参数部分,括号内可为空,但括号不能省略
   C)C语言程序是以函数为基本单位的
   D)在C语言程序中,注释行只能位于一条语句的后面
    该问题分值: 2
答案:D
[解析] 本题涉及C语言基本的3个知识点:①C语言是以函数为基本单位的,每一个函数完成相对独立的功能,一个程序可以包括多个函数,但有且仅有一个主函数;②主函数main()的
圆括号内是填写参数的,可以没有参数,但括号不可以省略:③程序的注释部分应该在“/*…………*/”之间,它允许出现在程序的任何位置。
10. 
下列合法的标识符是(    )。
   A) 123    B) #256    C) a.55    D) abhj1_2_3
    该问题分值: 1
答案:D
[解析]C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。“#”、“.”不允许出现在标识符中。
11. 
若有下列定义(设int类型变量占2个字节):
 floatx=123.4567;
 则下列语句:
 printf("x=%5.2f",x);
 输出的结果是(    )。
 A) x=123.46    B) 123.4567
 C) x=123.4567    D) 123.46
    该问题分值: 1
答案:A
[解析] 本题考查printf函数的格式。“%5.2f”格式符中的“f”表示以带小数点的形式输出单精度或者双精度数:“5”表示指定数据输出宽度为5;“.2”表示指定输出数据小数位占2位数,并对截
去的第一位小数做四舍五入处理。
12. 
下列程序的输出结果是(    )。
 
 main()
   
int a,b,d=25;
 
a:d/10%9;
 
b=a&&(-1);
 
printf("%d,%d\n",a,b) ;
   A) 6,1    B) 2,1    C) 6,0    D) 2,0
    该问题分值: 1
答案:B
[解析] 算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2;当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真
 (即为1)。所以b=2&&(-1)=1。
13. 
有下列程序:
   fun(int x,int y) return (x+y);
   main()
    int a=1,b=2,c=3,sum;
       sm=fun((a++,b++,a+B) ,c++);
       printf("%d\n",sum);
   
   执行后的输出结果是(    )。
   A) 6    B) 7
   C) 8    D) 9
    该问题分值: 2
答案:C
[解析] 函数fun(int x,int y)的功能是返回两个整型数据的和。在主函数中,变量a,b,c的初始值分别为1,2,3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函
数的表达式为“fun(5,3);”,其返回值等8。所以变量sum的值等于8。
14. 
有以下程序:
   main()
   int k=5;
   while(--k)printf("%d",k-=3);
   printf("\n");
   
   执行后的输出结果是______。
   A) 1    B) 2
   C) 4    D) 死循环

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。