全国计算机等级考试等级考试真题库之选择题(11)
1.下列叙述中正确的是
A) 一个算法的空间复杂度大,则其时间复杂度也必定大
B) 一个算法的空间复杂度大,则其时间复杂度必定小
C) 一个算法的时间复杂度大,则其空间复杂度必定小
D) 算法的时间复杂度与空间复杂度没有直接关系
参考答案:D
【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。
2.下列叙述中正确的是
A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B) 循环队列中的元素个数随队头指针的变化而动态变化
C) 循环队列中的元素个数随队尾指针的变化而动态变化
D) 以上说法都不对
参考答案:A
【解析】在循环队列中,用队尾指针指向队列中的队尾元素,用排头指针指向排头元素的前一个位置。因此,从排头指针指向的后一个位置直到队尾指针指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的
变化而变化,A正确。
3.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为
A) 219
B) 229
C) 230
D) 231
参考答案:B
【解析】二叉树中,度为0的节点数等于度为2的节点数加1,即n20-1,叶子节点即度为0,则n2=79,总结点数为
n012=80+70+79=229,答案为B。
4.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为
A) 9
B) 10
C) 45
D) 90
参考答案:C
【解析】冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的
次数为9+8+7+6+5+4+3+2+1=45,选C。
5.构成计算机软件的是
A) 源代码
B) 程序和数据
C) 程序和文档
D) 程序、数据与相关文档
参考答案:D
【解析】软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。
6.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是
A) 测试
B) 设计
C) 可行性研究
D) 实现
参考答案:C
【解析】开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计3个阶段,实施则包括编码和测试两个阶段,C不属于开发阶段。
7.下面不能作为结构化方法软件需求分析工具的是
A) 系统结构图
B) 数据字典()
C) 数据流程图(图)
D) 判定表
参考答案:A
【解析】结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。
8.在关系模型中,每一个二维表称为一个
A) 关系
B) 属性
C) 元组
D) 主码(键)
参考答案:A
【解析】关系模型采用二维表来表示,即每个二维表称为一个关系。
9.若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是
A) 一对一
B) 一对多
C) 多对一
D) 多对多
参考答案:B
【解析】A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所以为一对多联系。10.
A) 选择
B) 投影
C) 交
D) 并
参考答案:D
【解析】关系T中的元素与关系R和关系S中不同元素的总和,因此为并操作。
11.我们所写的每条C语句,经过编译最终都将转换成二进制的
机器指令。关于转换以下说法错误的是
A) 一条C语句可能会被转换成零条机器指令
B) 一条C语句可能会被转换成多条机器指令
C) 一条C语句对应转换成一条机器指令
D) 某种类型和格式的C语句被转换成机器指令的条数是固定的
参考答案:C
【解析】一个C语句经过编译后产生若干条机器指令?声明部分不是语句,不产生机器指令,只是对有关数据的声明?而且固定类型和格式的C语句被转换成机器指令的条数固定?所以选择C选项?
12.关于"(条件表达式)循环体",以下叙述正确的是
A) 循环体的执行次数总是比条件表达式的执行次数多一次
B) 条件表达式的执行次数总是比循环体的执行次数多一次
C) 条件表达式的执行次数与循环体的执行次数一样
D) 条件表达式的执行次数与循环体的执行次数无关
参考答案:B
【解析】循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B 选项?
13.关于C语言的符号常量,以下叙述中正确的是
A) 符号常量的符号名是标识符,但必须大写
B) 符号常量是指在程序中通过宏定义用一个符号名来代表一个常量
C) 符号常量在整个程序中其值都不能再被重新定义
D) 符号常量的符号名必须是常量
参考答案:B
【解析】在C语言中,可以用一个标识符来代表一个常量,称为符号常量?这个标识符必须在程序中进行特别的"指定",并符合标识符的命名规则?用作符号常量的标识符通常采用大写字母表示,在主函数中其值不能再被定义?所以选择B选项?
14.若有以下程序
<>
()
{ 10, 11;
a b 4;
(" \n", a, b);
}
则程序的输出结果是
A) 1 2
B) -1 2
C) -1 -2
D) 1 -2
参考答案:B
【解析】先计算4,即4,结果为2,然后计算2,结果为-1,最后a的值为-1的值为2,所以选择B选项?
15.若有以下程序
<>
()
{ 000;
(a ), (, 4);
("\n");
}
则程序的输出结果是
A) 0,4,0
B) 0,4,4
C) 1,4,1
D) 1,4,4
参考答案:A
【解析】逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低,所以先计算()这部分。其中,赋值运算符从右往左计算,先执行自增1后再赋值,所以a的值为1,执行1,即1-1的值为0,并将0赋给变量c?第二部分(4),先执行0+0,即a的值为0,然后执行40+4,即b的值为4?所以打印结果为0,4,0,选择A选项?
16.若有以下程序
<>
()
{ 000;
(,, ); /*第4行*/
;; /*第5行*/
; /*第6行*/
("\n"); /*第7行*/
}
编译时出现错误,你认为出错的是
A) 第4行
B) 第5行
C) 第6行
D) 第7行
参考答案:A
【解析】第4行逗号表达式中间的第二个表达式为空,是不合法的,可以去掉写成,也可以在里面补一个表达式,如?所以选择A 选项?
17.若有以下程序
<>
()
{ 1234;
((2) (1)) 2;
((3) (1)) 5;
("\n", );
}
则程序的输出结果是
A) 1,2,3,4
B) 2,1,21
C) 5,1,21
D) 2,2,2,4
参考答案:D
【解析】第一个语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断?执行第一个判断条件时a的值为2,整个表达式的值为真的值不变的值为2?判断第二个条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式3,不成立,不再判断第二个运算对象,所以不执行1操作和5操作?所以结果为选项D?
18.若有以下程序
<>
()
{ 1234, 0;
(1) ; 1;
(2) 2;
; (3) 3;
("\n", r);
}
则程序的输出结果是
A) 10
B) 7
C) 6
D) 3
参考答案:B
【解析】总是和与之最近的上面的配对,执行第一个,判断条件不成立,执行1;语句?再执行第二个语句中的判断条件,成立,左移执行2的值为3,再执行第三个的判断条件,不成立执行第7行后面的空语句";"?再执行第四个的判断条件4成立,执行4的值为7?然后打印输出?
19.若有以下程序
<>
()
{ 0, n;
(0; n<4; )
{ (n)
1: 1;
2: 2;
3: 3;
}
}
("\n", s);
}
则程序的输出结果是
A) 6
B) 18
C) 10
D) 24
参考答案:D
【解析】第一次循环的值为0,所以从后面的语句开始执行4123的值为10?在进入第二次循环的值为1,所以执行123的值为16?在进入第三次循环的值为2,所以执行23的值为21?在进入第四次循环的值为3,所以执行3的值为24?
20.若有以下程序
<>
()
{ 2, 0;
() ;
("\n", a, b);
}
则程序的输出结果是
A) 1,2
B) 0,2
C) 1,3
D) 2,3
参考答案:A
【解析】第一次判断条件中,先用后加,为-2不为0条件为真,执行a 的自加与操作的值变为-1的值变为1?第二次判断后的值变为0的值变为2?第三次判断条件为假,但是仍要执行自加操作,即值为1,跳出循环?打印1和2?
21.若有以下程序
<>
()
{ 6, 0, 0;
( ; ) { b a; a ; }
("\n", );
}
则程序的输出结果是
A) 1,14,3
B) 0,14,3
C) 0,18,3
D) 0,14,6
参考答案:B
【解析】本循环的条件判断时只要a为0就退出循环体,初始值a 的值为6,满足条件执行完循环体的值为6 即(),所以a的值为5的值为1?第二次循环后b的值为11的值为3的值为2?第三次也是最后循环后的值为0的值14的值为3?
22.以下选项中非法的C语言字符常量是
A) '\007'
B) '\b'
C) ''
D) '\'
参考答案:C
【解析】C选项中是字符串常量,应该用双引号表示即""?所以选择C选项?
23.若有以下程序
<>
f( x)
{ x*'a'; }
()
{ a, 0;
( 0; a<4; 1 )
{ b = f(a); (b); }
}
则程序的输出结果是
A)
B)
C)
D)
参考答案:C
【解析】该题目首先初始化变量a和b,通过循环语句使a取值为0、1、2、3,f函数的功能是将a*'a'的值返回给b,即b为a、b、
e、j。最后通过字符输出函数()将b输出。因此C选项正确。
24.若有以下程序
<>
( *a)
{ 2;
; *a = *a * 2; (",", *a);
}
()
{ 3, *;
(p); ("\n", k, *p);
}
则程序的输出结果是
A) 4,3,3
B) 4,3,4
C) 6,3,6
D) 6,6,6
参考答案:A
【解析】首先在主函数中给整型变量k赋值为3,将变量k的地址赋给指针变量p;调用函数,将实参p的值传给形参a,在函数中,指针变量a又获得变量b的地址,通过运算后,输出a的值为4;
返回主函数,输出k的值和p的值为3和3。因此A选项正确。
25.若有以下程序
<>
7;
f( **s)
{ *;
*;
(",", k, *t, **s);
}
()
{ 3,*, **r = ;
f(r); ("\n", i, *p, **r);
}
则程序的输出结果是
A) 3,3,3,7,7,7
B) 3,7,7,7,7,7
C) 7,7,7,3,3,3
D) 7,7,7,3,7,7
参考答案:D
【解析】在主函数中分别给整型变量i,指针型变量p和指向指针
的指针变量r赋初值;调用f函数,并将实参变量r的值传递给形参变量s,在f函数中,通过(",", k, *t, **s);语句输出7,7,7;返回主函数,通过("\n", i, *p, **r);输出3,7,7?因此D选项正确?
26.若有以下程序
<>
*f( * *t)
{ *k;
(*s < *t){ k = s; ; ; }
s;
}
()
{ 3, 5, *, *, *r;
(); ("\n", i, j, *p, *q, *r);
}
则程序的输出结果是
A) 3,5,5,3,5
B) 3,5,3,5,5
C) 5,3,5,3,5
D) 5,3,3,5,5
参考答案:B
【解析】在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,如果条件成立,则将指针变量s和t互换,并且将指针s的地址返回主函数。最后输出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B选项正确。
27.若有以下程序
<>
N 4
( a[][N], b[], )
{ ;
(0; i { b[i] = a[i][0]; (1; j ( ? (b[i] > a[i][j]) : (b[i] < a[i][j])) b[i] = a[i][j]; } } ( ) { x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N];