国家二级C语言机试(选择题)模拟试卷310
选择题
1.下列叙述中正确的是( )。(D)
A. 一个逻辑数据结构只能有一种存储结构
B. 逻辑结构属于线性结构,存储结构属于非线性结构
C. 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D. 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据逻辑结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。比如逻辑结构中简单的线性结构,可以用数组(顺序存储)或单向链表(链接存储)来实现。采用不同的存储结构,其处理的效率是不同的。
2.C语言源程序名的后缀是(C)
A. .exe
B. .obj
C. .c
D. .cp
解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目杯文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。
3.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为( )。(C)
A. 6
B. 8
C. 9
D. 12
解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。
4.下列对队列的描述中正确的是(D)
A. 队列属于非线性表
B. 队列按“先进后出”原则组织数据
C. 队列在队尾删除数据
D. 队列按“先进先出”原则组织数据
解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾:允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除:反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。
5.下列排序方法中,最坏情况下时间复杂度最小的是(C)
A. 冒泡排序
B. 快速排序
C. 堆排序
D. 直接插入排序
解析:
6.以下叙述中正确的是(D)
A. 标识符的长度不能任意长,最多只能包含16个字符
B. 语言中的关键字不能作变量名,但可以作为函数名
C. 用户自定义的标识符必须“见名知义”,如果随意定义,则会出编译错误
D. 标识符总是由字母、数字和下划线组成,且第一个字符不得为数字
解析:标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。C语言合法标识符的命名规则是:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;③大写字母与小写字母被认为是两个不同的字符;④C语言规定了一个标识符允许的字符个数,为32,超过的字符将不被识别。C语言的标识符可分为以下3类:①关键字,不能用于为自定义标识符命名。②预定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名,一般做到见名知义,但是没有特殊规定。
7.下列叙述中正确的是( )。(C)
A. 数据库的数据项之间无联系
B. 数据库中任意两个表之间一定不存在联系
C. 数据库的数据项之间存在联系
D. 数据库的数据项之间以及两个表之间都不存在联系
解析:数据库的数据项之间以及表之间都存在联系。
8.下列叙述中错误的是( )。(B)
A. C程序可以由多个程序文件组成
B. 一个C语言程序只能实现一种算法
C. C程序可以由一个或多个函数组成
D. 一个C函数可以单独作为一个C程序文件存在
解析:在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B选项错误。
9.下列对于软件测试的描述中正确的是(C)
A. 软件测试的目的是证明程序是否正确
B. 软件测试的目的是使程序运行结果正确
C. 软件测试的目的是尽可能多地发现程序中的错误
D. 软件测试的目的是使程序符合结构化原则
解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正确功能。
10.下列条件语句中,输出结果与其他语句不同的是(A)
A. if(a=0)printf(’’%d\\
,x);elseprintf(’’%d\\
’’,y);
B. if(a=0)printf(’’%d\\
’’,y);elseprintf(’’%d\\
’’,x);
C. if(a!=0)printf(’’%d\\
’’,x);elseprintf(’’%d\\
’’,y);
D. if(a)printf(’’%d\\
’’,x);elseprintf(’’%d\\
’’,y);
解析:选项B、C、D这三条语句都是在变量不等于0的情况下,输出x;等于0的情况下输出v,而选项A则正好相反。
11.设int a=2,b=3,c=4;,则以下选项中值为0的表达式是( )。(A)
A. (!a==1)&(!b=0)
B. a&b
C. (a<b)&!c‖1
D. a‖(b+b)||(c—a)
解析:C语言中的逻辑运算主要要看运算符的优先级。选项A中,(!a==1)中!运算优先级比==高,因此!a为假,然后再和1比较是否相等,因此整个表达式的结果为假,(!a==1)和(!b==0)是与的关系,前面的表达式为假,整个表达式结果就是假,选项C中a<b为真,!c值为假,(a<b)&!c值为假,(a<b)&!c|||为真;选项B中a&b的值为2;选项D中a的值为真,表达式的结果为真。
12.有以下程序
main(){int x=1,y=0,a=0,b=0;
switch(x){
case 1:switch(y){
case 0:a++;break;
case 1:b++;break;}
case 2:a++;b++;break;
case 3:a++;b++;)
printf(\\(D)
A. a=2,b=2
B. a=1,b=1
C. a=1,b=0
D. a=2,b=1
解析:本题考查的是用switch语句实现多分支选择结构,首先进入第,一个switch(x)判断,进入case 1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。
13.面向对象方法中,继承是指(D)
A. 一组对象所具有的相似性质
<本文档预览:3600字符,共12168字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载