国家二级C语言机试(选择题)模拟试卷365
选择题
1.算法的空间复杂度是指( )。(A)
A. 算法在执行过程中所需要的计算机存储空间
B. 算法所处理的数据量
C. 算法程序中的语句或指令条数
D. 算法在执行过程中所需要的临时工作单元数
解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,所以选择A选项。
2.计算机能直接执行的程序是(B)
A. 目标程序
B. 可执行程序
C. 汇编程序
D. 源程序
解析:把由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”(后缀名为.obj),由汇编语言编写的程序称为“汇编程序”。为了把源程序转换成机器能接受的目标程序,软件工作者编制了一系列软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。这种具有翻译功能的软件称为“编译程序”,每种高级语言都有与它对应的编译程序。C源程序经过C编译程序编译之后生成一个后缀为.obj的二制进文件(称为目标文件),这个目标程序要和C语言的库函数相链接生成一个后缀为.exe的文件,这个文件可以在操作系统中直接执行,称为可执行程序。
3.以下选项中不属于C语言程序运算符的是(C)
A. sizeof
B. ()
C.
D. &&
解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而不是C语言的运算符,C语言中!=表示不等于。
4.下面关于对象概念的描述中正确的是( )。(A)
A. 对象间的通信靠消息传递
B. 对象是名字和方法的封装体
C. 任何对象必须有继承性
D. 对象的多态性是指一个对象有多个操作
解析:对象之间进行通信的构造叫做消息,故A选项正确。多态性是指同一个操作可以是不同对象的行为,故D选项错误。对象不一定必须有继承性,故C选项错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,故B选项错误。
5.下列叙述中正确的是(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 以上都不正确
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域:另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
6.设栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为(C)
A. 30
B. 29
C. 20
D. 19
解析:栈是允许在栈顶进行插入和删除的线性表,不允许在栈底进行插入与删除。通常用指针top来指示栈顶的位置,用指针bottom指向栈底。对栈的操作有入栈和退栈两种。入栈运算:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。退栈运算:首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针退一(即top减1)。因为初始状态为top=0,经过入栈和退栈操作后栈中的元素个数就是top指针指向的位置。选项C正确。
7.已知字母A的ASCII码值为65,则下面程序的输出是( )。
main()
{ char c1,c2;
c1=’A’+’5’-’3’;
c2=’A’+’6’-’3’;
printf(\\(A)
A. 67,D
B. B,C
C. C,D
D. 不确定的值
解析:程序中’A’+’5’-’3’相当于“’A’+2=67”,“’A’+’6’-’3’”相当于’A’+3=68。输出函数的格式控制符分别为%d,%c,对应输出一个整数和一个字符。
8.在最坏情况下( )。(C)
A. 快速排序的时间复杂度比冒泡排序的时间复杂度要小
B. 快速排序的时间复杂度比希尔排序的时间复杂度要小
C. 希尔排序的时间复杂度比直接插入排序的时间复杂度要小
D. 快速排序的时间复杂度与希尔排序的时间复杂度是一样的
解析:在最坏情况下,快速排序、冒泡排序和直接插入排序所需要的比较次数为O(n2),希尔排序所需要的比较次数为O(n1.5),所以答案选C。
9.若有以下程序
#include
main() {
int a=0,b=0,c=0,d;
c= (a+=b,,b+=a); /*第4行*/
d=c;; /*第5行*/
; /*第6行*/
printf(“%d,%d,%d\n”,a,b,c);/*第7行*/
}
编译时出现错误,你认为出错的是(A)
A. 第4行
B. 第5行
C. 第6行
D. 第7行
解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C语言的空语句,是编译程序可以识别并且编译的,因此第5、6行都是正确的。
10.若有以下程序:
#include<stdio.h>
main( )
{
int a=0,b=0,c=0;
c=(a— = + +a),(a+ =b,b+ =4);
printf(″%d,%d,%d\n″,a,b,c);
}
则程序的输出结果是( )。(A)
A. 0,4,0
B. 0,4,4
C. 1,4,1
D. 1,4,4
解析:逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。另外逗号运算符的优先级最低,所以先计算c=(a— = + +a)这部分。其中,赋值运算符从右往左计算,先执行+ +a,a自增1后再赋值,所以a的值为1,执行a=a—1,即a=1—1,a的值为0,并将0赋给变量c。第二部分(a+ =b,b+ =4),先执行a=a+b,a=0+0,即a的值为0,然后执行b+ =4,b=0+4,即b的值为4。所以输出结果为0,4,0,故选项A正确。
11.有以下稗宇:
#include
main()
{ int a=1,b=2,c=3,x;
x=(a^b.&c:
printf(“%d\n”,x);
}
程序的运行结果是( )。(A)
A. 3
B. 1
C. 2
D. 0
解析:本题考查位运算符以及相关运算。^为按位或,&为按位与,那么a^b为3,再与c按位与仍然为3,所以答案为A选项。
12.软件生命周期是指(A)
A. 软件产品从提出、实现、使用维护到停止使用退役的过程
B. 软件从需求分析、设计、实现到测试完
本文档预览:3600字符,共13268字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载