国家二级C语言机试(选择题)模拟试卷267 (题后含答案及解析)
题型有:1. 
1. 下列描述中正确的是
A.一个逻辑数据结构只能有一种存储结构
B.数据的逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
正确答案:D
解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构;而采用不同的存储结构,其数据处理的效率是不同的。 知识模块:数据结构与算法
2. 下列各组排序法中,最坏情况下比较次数相同的是(    )。
A.简单选择排序与堆排序
B.简单插入排序与希尔排序
C.冒泡排序与快速排序
D.希尔排序与堆排序
正确答案:C
解析:对于长度为n的线性表,最坏情况下查或排序的次数如下表: 知识模块:公共基础知识 二叉树公式
3. 表达式a+=a=a=9的值是
A.9
B.0
C.18
D.9
正确答案:B
解析:第一步a=9,然后计算a.a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。 知识模块:C语言基础知识
4. 有两个关系R和T如下图所示:则由关系R得到关系T的运算是(    )。
A.并
B.交
C.选择
D.投影
正确答案:D
解析:从关系模式中指定若干属性组成新的关系称为投影。对关系R进行投影运算的结果记为,πA(R),其中,A为R中的属性列。本题中关系T中的两列与关系R中的两列相同,故为投影运算。 知识模块:公共基础知识
5. 一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教师和课程间的联系是(    )。
A.1:1联系
B.1:m联系
C.m:1联系
D.m:n联系
正确答案:D
解析:因为一名教师可讲授多门课程,而一门课程又能由多名教师讲授,所以教师和课程之间是多对多的关系,可以表示为m:n,选择D。 
6. 检查软件产品是否符合需求定义的过程称为
A.确认测试
B.集成测试
C.验证测试
D.验收测试
正确答案:A
解析:确定测试是验证软件的功能和性能及其他特性是否满足了需求规格说明书中确定的各种需求以及软件配置是否完全、正确。 知识模块:程序设计基础和软件工程基础
7. 设二叉树的前序序列为ABDEGHCFIJ,中序序列为DBGEHACIFJ。则按层次输出(从上到下,同一层从左到右)的序列为
A.ABCDEFGHIJ
B.DGHEBIJFCA
C.JIHGFEDCBA
D.GHIJDEFBCA
正确答案:A
解析:前序遍历中,第一个字母是根结点,也就是A是根结点;在中序遍历中,根结点前面的是左子树、后面的是右子树。前序中,B在A的后面,中序中在左子树中,可知B为A的左结点。中序中D在B的前面,前序中在B的后面,可知D为B的左结点,GEH为B的右子树。前序中顺序为EGH,由此可知,E为B的右结点,G为E的左结点、H为E的右结点。右子树中,前序中C在最前,因为右子树根结点,也就是A的右结点,根据前序中的子树FIJ和中序中的IFJ子树可知F为C的右结点,I为F的左结点、J为F的右结点。由此可画出这个二叉树,然后根据二叉树 知识模块:数据结构与运算
8. 以下选项中,合法的一组C语言数值常量是
A.12.0Xa23 4.5e0
B.028.5e-3-0xf
C..177 4e1.5 0abC
D.0x8A 10,000 3.e5
正确答案:A
解析:八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。 知识模块:C语言程序设计
9. 以下选项中不能作为C语言合法常量的是( )。
A.cd
B.0.1e+6
C.\a
D.\011
正确答案:A
解析:字符常量是由单引号括起来的单个字符,选项A)错误,而选项B)是由科学计数法表示的实型常量,选项C)是由转义字符\a表示的字符串常量,选项D)是由3位八进制数所代表的字符。答案选A)。 知识模块:数据类型、运算符与表达式
10. 以下错误的定义语句是
A.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
B.intx[][3]={{0),{1},{1,2,3}};
C.intx[][3]={1,2,3,4);
D.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
正确答案:D
解析:一维数组定义和初始化是允许省略行下标,不允许省略列下标。 知识模块:函数和数组
11. 有以下计算公式    若程序前面已经在命令行中包含math.件,不能够正确计算上述公式的程序段是
A.y=sqrt(x);if(x<0)y=sqrt(-x);
B.if(x>=0)y=sqrt(x);else y=sqrt(-x);
C.if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);
D.y=sqrt(x>=07x:-x);
正确答案:A
解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根:当x小于0时,y值等于x的相反数的算术平方根。所以选项B)用一个完整的if else语句表达了计算公式的含义;选项C)用两个if语句表达了计算公式的含义;选项D)在求平方根函数的后面用x≥07x:
-x条件表达式来表达了计算公式的含义。选项A)没有用C语言语句正确的表达计算公式的含义。 知识模块:C语言程序设计
12. 有以下程序main0{ int a=-2,b=0; while(a++&&++b);printf(%d,%d\n,a,b);}程序运行后输出结果是
A.0,3
B.1,2
C.1,3
D.0,2
正确答案:B
解析:循环体为空,共执行2次。第一次变量a初值为-2,b初值为0,表达式a++&&++b值为1,同时a的值为-1,b的值为1,第二次循环条件判断以后, a的值为0,b的值2,执行循环体空,第三次判断条件表达式值为0,不执行循环体,而a的值为1,但是表达式a++的
值为0,因此不计算表达式++b的值,b的值仍为2。 知识模块:C语言程序设计
13. 有以下程序void fun(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];  a[i]=a[n-1-i];  a[n-1-i]=t;}}main(  ){int k[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf(%d,k[i]);printf(\n);}程序的运行结果是
A.876543
B.321678
C.1098765
D.345678
正确答案:B
解析:函数fun(int a[],int n)的功能是实现整型数组a[]元素的逆置操作。在主函数中当执行胁(k,5)时,对k[10]中的子数组k[5]={1,2,3,4,5}的首尾元素进行逆置,此时k[10]={5,4,3,2,1,6,7,8,9,10}。所在循环语句中输出从第2~7个数组元素时,其值分别为
321678。 知识模块:函数和数组
14. 在关系数据库中,用来表示实体间联系的是
A.属性
B.二维表
C.网状结构
D.树状结构
正确答案:B
解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。 
15. 以下叙述中正确的是
A.使用typedef说明新类型名时,其格式是: typedef 新类型名 原类型名;
B.在程序中,允许用typedef来说明一种新的类型名
C.使用typedef 说明新类型名时,后面不能加分号
D.在使用typedef改变原类型的名称后,只能使用新的类型名
正确答案:B
解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选项中可以使用原类型名。 
16. 以下叙述中正确的是
A.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B.在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C.在printf函数中,各个输出项只能是变量
D.使用printf函数无法输出百分号%
正确答案:A
解析:scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A正确,scanf(  )的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以B错误,Printf函数可以输出常量也可以输出变量,所以C错误,Prinf函数可以用\%来输出百分号%,所以D错误。 
17. 以下叙述中正确的是
A.只能在循环体内和switch语句体内使用break语句
B.当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行
C.continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环
D.在while语句和do-while语句中无法使用continue语句
正确答案:A
解析:break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。B、C和D三个选项中均有错误。因此A选项正确。 

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