国家二级C语言机试(选择题)模拟试卷398
选择题
1.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(C)
A. log2n
B. n/2
C. n
D. n+1
解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。
2.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。
3.从表中任何一个结点位置出发就可以不重复地访问到表中其他所有结点的链表是(A)
A. 循环链表
B. 双向链表
C. 单向链表
D. 二叉链表
解析:循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环,循环一圈就访问到了表中其他所有结点而不重复。
4.结构化程序设计的基本原则不包括(A)
A. 多元性
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。
5.有以下程序
#include
int fun(int a,int b)
{if(b=0)return a;
else return(fun(–a,–b));
}
main()
{printf(\\(B)
A. 1
B. 2
C. 3
D. 4
解析:由程序可知,函数fun(int a,intb)是一个递归函数。所以当主函数中调用“fun(4,2)”时,其执行过程如下“fun(4,2)->fun(3,1)->fun(2,0)”,其返回值为2。所以正确答案为选项B)。
6.设栈的存储空间为S(1:60),初始状态为top=61。现经过一系列正常的入栈与退栈操作后,top=1,则栈中的元素个数为(A)
A. 60
B. 59
C. 0
D. 1
解析:栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位,即top-1。当压入第一个元素时,TOP指针指向60+1-1 = 60;当压入第二个元素时,TOP指针指向60+1-2 = 59;……;以此类推,当压入第N个元素时,TOP指针指向60+1-N = 1,则N=60。所以选项A正确。
7.若有以下程序
#include<stdio.h>
main( ){
inta=0,b=0,c=0c=(a+=++b,b+=4);
printf(’’%d,%d,%d\\\\0n’’,a,b,c);)
则程序的输出结果是(C)
A. 1,5,1
B. -1,4,4
C. 1,5,5
D. -1,4,-1
解析:有逗号表达式构成的语句:pAd=++sum,pAd++,++pad;主要从左到由连续运算,因此pad的值为6。注意pad和pAd的是不同的变量。
8.下面不能作为结构化方法软件需求分析工具的是(A)
A. 系统结构图
B. 数据字典(DD)
C. 数据流程图(DFD图)
D. 判定表
解析:按照DeMarco的定义,“结构化分析就是使用数据流图 (DFD图)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。”系统结构图不能作为结构化方法软件需求分析工具。
9.在软件开发中,需求分析阶段可以使用的工具是(B)
A. N—S图
B. DFD图
C. PAD图
D. 程序流程图
解析:在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),数据字典(DD)、判断树和判断表。
10.下列关于数据库设计的叙述中,正确的是(A)
A. 在需求分析阶段建立数据字典
B. 在概念设计阶段建立数据字典
C. 在逻辑设计阶段建立数据字典
D. 在物理设计阶段建立数据字典
解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
11.有以下程序:
#include
main()
{ int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf(“%d\n”,Y);
}
程序运行后的输出结果是( )。(D)
A. 3
B. 2
C. 1
D. 0
解析:在jf else语句中,else总是与离它最近的if配对。本题中x为1,所以!x为0,所以执行else if语句中的内容,判断(x==0)是否成立,因为x为1,所以条件不成立,所以else if内部的if…else语句不再执行,y的值还是初始值0。
12.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( )。(B)
A. x+1=y
B. ++x,y=x–
C. x=x+10=x+y
D. double(x)/10
解析:不能将变量赋给表达式,故A、C选项错误,D选项中强制类型转换表达式应写成(doub1e)x/10。
13.有以下程序:
#include<stdio.h>
main()
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)
e[s[i]]++;
for(i=1;i<5;i++)
printf(\\(B)
A. 2 3 4 4
B. 4 3 3 2
C. 1 2 3 4
D. 1 1 2 3
解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,因此B选项正确。
14.若有以下程序#include
char*a=’’you’’;
charb[]=’’WelcomeyoutoChina!’’;
main( ){
inti,j:0;char*p;
for(
本文档预览:3600字符,共11942字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载