国家二级(C语言)机试模拟试卷464
选择题
1.下列关于栈的叙述正确的是( )。(B)
A. 栈按\\
B. 栈按\\
C. 只能在栈底插入数据
D. 不能删除数据
解析:栈是按\\
2.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。
I.人工管理阶段
II.文件系统阶段
III.数据库阶段(A)
A. 仅I
B. 仅III
C. I和II
D. II和III
解析:数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。
3.有以下程序
#include
main()
{FILE*fp;int i=20,j=30,k,n;
fp=fopen(\\(A)
A. 20 30
B. 20 50
C. 30 50
D. 30 20
解析:分析程序段,首先以只写方式打开文件,利用fprintf函数将i和j的值写入到文件d1.dat中,然后关闭文件;再以只读方式打开文件,利用格式化输入函数fscanf将文件中的数据赋值给k和n,最后输出k和n的值,分别是20和30。
4.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(A)
A. 冒泡排序为n(n-1)/2
B. 简单插入排序为n
C. 希尔排序为n
D. 快速排序为n/2
解析:在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为O(n 1.5 ):堆排序所需要的比较次数为O(nlog 2 n)。
5.在学校中,“班级”与“学生”两个实体集之间的联系属于( )关系。(B)
A. 一对一
B. 一对多
C. 多对一
D. 多对多
解析:一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。
6.设有定义:int x=2;,以下表达式中,值不为6的是( )。(A)
A. 2*x,x+=2
B. x++,2*x
C. x*c=(1+x)
D. x*=x+1
解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A。B选项中首先计算逗号表达式中第一一表达式x++,此时x为3,在执行第二个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x*(1+x)=2*(1+2)=6。D选项中的表达式可以表示为x=x*(x+1)=2*3=6。
7.设有定义:intx=2;,以下表达式中,值不为6的是( )。(A)
A. 2*x,x+=2
B. x++,2,x
C. x*=(1+x)
D. x*=x+1
解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,在执行第二个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x}(1+x)=2*(1+2)=6。D选项中的表达式可以表示为x=x*(x+1)=2*3=6。
8.有以下程序:
#include<stdio.h>
int fun(int x,int y)
{ if(x!=y)return(y);
else return((x+y)/2);
}
main()
{ int a=4,b=5,c=6;
pfintf(’’%d\n’’,fun(2*a,fun(b,c)));
}
程序运行后的输出结果是( )。(B)
A. 3
B. 6
C. 8
D. 12
解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即。fun(8,6),8!=6,所以返回6。
9.已知:int c[3][4];,则对数组元素引用正确的是( )。(C )
A. c[1l[4]
B. c[1.5][0]
C. c[1+0][0]
D. 以上表达都错误
解析:此题考查的是数组元素的引用。对于已定义的数组a[M][N],数组元素的正确引用必须满足行下标小于M,列下标小于N,且为正整数。因此,选项A)中列下标溢出;选项B)中行下标出现小数;选项C)满足要求。
10.有以下程序:
#include<stdio.h>
main()
{unsigned char a=2,b=4,c=5,d;
d=a|b;d&=c;printf(\\(B)
A. 3
B. 4
C. 5
D. 6
解析:&按位与,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。|按位或,两个相应的二进制位中只要有一个为1,该位的结果值为1。2的二进制为00000010,4的二进制为00000100,所以做或运算结果为00000110,该数与5即0000010l做与操作结果为00000100,即4。
11.下列关于线性表的叙述中,不正确的是( )。(C)
A. 线性表可以是空表
B. 线性表是一种线性结构
C. 线性表的所有结点有且仅有一个前件和后件
D. 线性表是由n个元素组成的一个有限序列
解析:线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C是错误的。
12.对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为( )。(A)
A. 并运算
B. 交运算
C. 差运算
D. 积运算
解析:关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的所有兀组。
13.数据库的故障恢复一般是由( )来执行恢复。(C)
A. 电脑用户
B. 数据库恢复机制
C. 数据库管理员
D. 系统普通用户
解析:数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。
14.以下关于结构化程序设计的叙述中正确的是( )。(D)
A. 由三种基本结构构成的程序只能解决小规模的问题
B. 结构化程序使用goto语句会很便捷
C. 一个结构化程序必须同时由顺序、分支
本文档预览:3600字符,共13880字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载