国家二级(C语言)机试模拟试卷429
选择题
1.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )。(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n-1)/2。
2.下列有关数据库的描述,正确的是( )。(B)
A. 数据库设计是指设计数据库管理系统
B. 数据库技术的根本目标是要解决数据共享的问题
C. 数据库是一个独立的系统,不需要操作系统的支持
D. 数据库系统中,数据的物理结构必须与逻辑结构一致
解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。
3.下列叙述中正确的是( )。(D)
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C错误。
4.结构化程序设计的基本原则不包括( )。(A)
A. 可封装
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
5.在软件开发中,需求分析阶段可以使用的工具是( )。(B)
A. N-S图
B. DFD图
C. PAD图
D. 程序流程图
解析:在需求分析阶段可以使用的工具有数据流图(I)FD图),数据字典(D),判定树与判定表,所以选择B。
6.有以下程序,其中%u表示按无符号整数输出( )。
main()
{unsigned int x=0xFFFF;/*x的初值为十六进制数*/
printf(\\(B)
A. -1
B. 65535
C. 32767
D. 0xFFFF
解析:因为%u表示按无符号整数输出,而x用十六进制表示为0xFFFF,所以输出无符号整数的最大值65535。
7.在一个C源程序文件中所定义的全局变量,其作用域为( )。(A)
A. 由具体定义位置和extern说明来决定范围
B. 所在程序的全部范围
C. 所在函数的全部范围
D. 所在文件的全部范围
解析:全局变量的作用域是从声明处到文件的结束。所以选择A
8.以下描述中,不是线性表顺序存储结构特征的是( )。(D)
A. 可随机访问
B. 需要连续的存储空间
C. 不便于插入和删除
D. 逻辑相邻的数据物理位置上不相邻
解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。
9.下面描述中,不属于软件危机表现的是( )。(A)
A. 软件过程不规范
B. 软件开发生产率低
C. 软件质量难以控制
D. 软件成本不断提高
解析:软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。
10.有以下程序:
#include<stdio.h>
main()
{
char c;
c=getchar();
do{
putchar(c++);
}while((c=getchar())!=’#’);
}
程序运行时从第一列开始输入abcdefg##<回车>,则输出结果是( )。(A)
A. abcdefg
B. bcdefgh
C. abcdefg#
D. bcdefgh#
解析:运算符“++”放在变量后面时,先参与其他操作,再对变量+1。putchar(c++)表示先输出当前c值,再对c值+1。当输入abcdef##时,在while语句中,程序输入#时循环退出。因此输出为abcdefg,故A选项正确。
11.有以下程序:
#include<stdio.h>
#include<string.h>
main()
{
chara[]=\\(A)
A. 4 5 3 4
B. 4 3 2 1
C. 4 5 3 3
D. 4 5 1 3
解析:对于字符数组a,含有4个元素,所以strlen为4,而sizeof包括最后隐藏的\0,故sizeof有5个。对于字符串b,strlen为3,关键是sizeof,这里的sizeof不再是指数组的长度,因为b是一个地址值,整型数据,所以占用了4个字节。
12.在下列叙述中,错误的是( )。(D)
A. C语言中,二维数组或多维数组是按行存放的
B. 赋值表达式b[1][2]=a[2][3]是正确的
C. char a[1];a[0]=’A’与int a[1];a[0]=’A’等价
D. 数组名后的方括号内可以为常量表达式,也可以为变量
解析:本题考查数组的4个知识点:①C语言中,二维数组或多维数组元素排列的顺序是按行存放;②不同数组的元素之间可以相互赋值;⑨字符型数组中存放的是字符,int型数组中存放的是字符对应的ASCII码值,虽然在计算机内部字符常量都是作为整型量来处理的,其对应的整数值就是ASCII码值,但两者并不完全等价;④数组名后的方括号内可以为常量,也可以为常量表达式,但不可以为变量。
13.有以下程序(注:字符a的ASCII码值为97):
#include<stdio.h>
main()
{char*s={\\(A)
A. 789
B. abc
C. 7890
D. 979899
解析:因为小写字符a,b,c的ASCII码值分别为97,98,99,而在do while循环语句中,每次对字符的ASCII码值取余数并输出,所以分别输出7,8,9。
14.下列关于C语言数据文件的叙述中正确的是( )。(D)
A. 文件由ASCII码字符序列组成,C语言只能读写文本文件
B. 文件由二进制数据序列组成,C语言只能读写二进制文件
C. 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D. 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文
本文档预览:3600字符,共14567字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载