二级C语言笔试405.docx
《二级C语言笔试405.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试405.docx(23页珍藏版)》请在冰豆网上搜索。
二级C语言笔试405
二级C语言笔试-405
(总分:
106.00,做题时间:
90分钟)
一、选择题(总题数:
40,分数:
72.00)
1.下列叙述中正确的是()。
A)一个算法的空间复杂度大,则其时间复杂度必定大
B)一个算法的空间复杂度大,则其时间复杂度必定小
C)一个算法的时间复杂度大,则其空间复杂度必定小
D)上述三种说法都不对
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况,它们之间没有内在联系。
2.数据的存储结构是指()。
A)数据所占的存储空间B)数据的逻辑结构在计算机中的存放形式
C)数据在计算机中的顺序存储方式D)存储在计算机外存中的数据
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。
3.下面描述中,不属于软件危机表现的是()。
A)软件过程不规范B)软件开发生产率低
C)软件质量难以控制D)软件成本不断提高
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]软件危机主要表现在以下6个方面:
①软件需求的增长得不到满足。
②软件开发成本和进度无法控制。
③软件质量难以保证。
④软件不可维护或维护程序非常低。
⑤软件的成本不断提高。
⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
4.软件生命周期是指
A)软件产品从提出、实现、使用维护到停止使用退役的过程
B)软件从需求分析、设计、实现到测试完成的过程
C)软件的开发过程
D)软件的运行维护过程
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]本题考查软件生命周期的概念,属于记忆型题目。
软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。
选项A正确。
5.算法的时间复杂度是指
A)执行算法程序所需要的时间B)算法程序的长度
C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]算法的复杂度主要包括算法的时间复杂度和空间复杂度。
所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
6.下列数据结构中,能用二分法进行查找的是()。
A)顺序存储的有序线性表B)结性链表
C)二叉链表D)有序线性链表
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表。
都只能采用顺序查找。
7.有下列二叉树,对此二叉树中序遍历的结果为()。
A)BDYEACFXZB)DYBEAFCZXC)ABCDEFXYZDABDYECFXZ
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]对二叉树的中序遍历是指:
首先遍历左子树,然后访问根结点,最后遍历右子树。
在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。
本题的遍历顺序是这样的:
①首先访问左子树:
BDEY:
②在左子树BDEY中,也按中序遍历,先访问左子树DY;在左子树DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点D,然后访问右子树Y;③接着访问根B,再访问右子树E;④访问左子树BDEY后,接着访问根结点八,接着访问右子树CFXZ;⑤右子树CFXZ的访问顺序同理可得:
FCZX。
8.以下叙述中正确的是______。
A)C语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英国国家的自然语言和数学语言作为语言的表达形式
D)C语言出现得最晚,具有其他语言的一切优点
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]C语言是于1972—1973年,由D.M.Ritehie在贝尔实验室为描述和实现UNIX操作系统而在B语言的基础上设计出来的。
C语言同时具备高级语言和低级语言的特点,既适用于编写系统软件,义可用于编写应用软件。
计算机不能直接执行C语言的源程序,必须编译生成目标程序后才能执行。
9.对如图所示的二叉树进行中序遍历的结果是
A)ACBDFEGB)ACBDFGE
C)ABDCGEFD)FCADBEG
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]二叉树的中序遍历递归算法为:
如果根不空,则①按中序次序访问左子树;②访问根结点;③按中序次序访问右子树。
否则返回。
本题中,根据中序遍历算法,应首先按照中序次序访问以C为根结点的左子树,然后再访问根结点F,最后才访问以E为根结点的右子树。
遍历以C为根结点的左子树同样要遵循中序遍历算法,因此中序遍历结果为ACBD:
然后遍历根结点F;遍历以E为根结点的右子树,同样要遵循中序遍历算法,因此中序遍历结果为EG。
最后把这3部分的遍历结果按顺序连接起来,中序遍历结果为ACBDFEG。
10.下列说法不正确的是()。
A)一个C语言源程序可以由一个函数组成也可以由多个函数组成
B)main()中的“()”是函数的参数部分,括号内可为空,但括号不能省略
C)C语言程序是以函数为基本单位的
D)在C语言程序中,注释行只能位于一条语句的后面
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题涉及C语言基本的3个知识点:
①C语言是以函数为基本单位的,每一个函数完成相对独立的功能,一个程序可以包括多个函数,但有且仅有一个主函数:
②主函数main()的圆括号内是填写参数的,可以没有参数,但括号不可以省略;⑧程序的注释部分应该在“/*…………*/”之间,它允许出现在程序的任何位置。
11.以下选项中,能用作用户标识符的是
A)voidB)8_8C)_0_D)unsigned
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]C语言用户标识符可以由字母、数字和下画线组成,且第一个字符不能是数字。
选项B的第一个字母不合法;关键字不能用作用户标识符,选项A、D不合法。
12.以下选项中,能用作用户标识符的是
A)voidB)8_8
C)_0_D)unsigned
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]C语言的标识符命名规则为:
①只能由字母、数值和下划线3种字符组成;②第一个字符必须是字母或下划线;③不能与C语言中的关键字或保留字相同。
13.执行语句printf("%u/n",+12345)的输出结果是()。
A)12345B)0C)-1D)非定值
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]“%u”表示输出无符号的整数(注意:
如果输出值前有符号,将自动转化为相应的无符号数输出)。
14.若要用下面的程序片段使指针变量P指向一个存储整型变量的动态存储单元
int*p;
p=______malloc(sizeof(int));
则应填入______。
A)intB)int*C)(*int)D)(int*)
(分数:
1.00)
A.
B.
C.
D. √
解析:
[评析]不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。
15.下列程序的输出结果是()。
main()
inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d/n",a,b);
A)6,1B)2,1C)6,0D)2,0
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]算术运行符“/”“%”的优先级处于同一级,并且两者的结合性都是从左到右。
所以算术表达式运算过程为:
a=25/10%9=2%9=2:
当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。
所以b=2&&(-1)=1,
16.下列能正确定义一维数组的选项是()。
A)inta[5]=0,1,2,3,4,5;B)chara[]=0,1,2,3,4,5;
C)chara='A','B','C';D)inta[5]="0123";
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项A)错误;选项C中定义的是一个字符变量C;选项D)中整型数组a中只能存储整型数据,而不能存储字符串常量“0123”。
17.下列程序的输出结果是()。
main()
inta=4,b=5,c;
if(a<B)
c=a*b;printf("%d,%d,%d/n",b,a,C);
else
c=b/a;printf("%d,%d,%d/n",b,a,C);
A)4,5,12B)20
C)5,4,20D)12
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题考查ifelse语句。
第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。
18.运行下列程序,若从键盘输入字母“a”,则输出结果是()。
Charc;
c=getchar();
if(c>='a'&&c<='g')c=c+4;
elseif(c>='g'&&c<='z')c=c-21;
elseprintf("inputerror!
/n");
putchar(C);
A)fB)tC)eD)d
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]首先,getchar函数通过键盘读入字符'a',即c='a'(其实c得到的是字符a的ASCII码值),然后判断if语句的控制条件,发现'a'>='a'&&'a'<='g'成立,则执行下列的语句,c=c+4,c得到的是字符e的ASCII码值,退出if语句,通过putchar函数输出字符e。
19.有以下程序
#include<stdio.h>
main()
inty=9;
for(y>0;y--)
if(y%3==0)printf("%d",--y);
程序的运行结果是()。
A.741B.963
C.852D.875421
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--y的值。
y先自减1,然后再输出y的值。
20.以下叙述中错误的是______。
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)当在函数的开头包括头文件stdio.h时,可以给指针变量赋NULL
(分数:
2.00)
A.
B