1、全国自考(计算机软件基础)-试卷 7 及答案解析(总分:70.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.有以下程序: #include main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“d,d,dn“,x,y,z); 程序运行后的输出结果是 【 】(分数:2.00)A.2,3,3B.2,3,2C.2,3,1D.2,2,12.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是 【 】(分数:2.00)A.+x,y=x-B.x+1=yC.x=x+10=x+yD.double(x)103.以下不能正确表示代
2、数式 (分数:2.00)A.2*a*bcdB.a*bcd*2C.acd*b*2D.2*a*bc*d4.与语句 if(ab)if(bc)x=1;else x=2;不等价的是 【 】(分数:2.00)A.if(ab)if(bc)x=1;else x=2;B.if(ac)x=1;else x=2;C.if(ab)&(bc)x=1;else x=2;D.if(ab)&(bc)x=1;else if(ab)&(bdataaD.Pdataa10.在以下的数量级中,数量级最高的是 【 】(分数:2.00)A.O(n 2 )B.O(n)C.O(nlog 2 n)D.O(1)11.下列有关线性表的叙述中,正确的
3、是 【 】(分数:2.00)A.一个线性表是 n 个数据元素的有限序列B.线性表中任何一个元素有且仅有一个直接前趋C.线性表中任何一个元素有且仅有一个直接后继D.以上说法都不正确12.一个栈的进栈数据元素序列为 1、2、3、4、5,则不可能为该栈的出栈序列的是 【 】(分数:2.00)A.2、3、4、1、5B.1、5、4、3、2C.2、3、1、4、5D.5、4、1、3、213.在有 n 个叶子节点的哈夫曼树中,其节点总数为 【 】(分数:2.00)A.不确定B.2nC.2n+1D.2n114.在顺序表2,5,7,10,14,1 5,18,23,35,41,52)中采用折半查找法查找 14 需做
4、【 】次关键字比较。(分数:2.00)A.5B.4C.3D.215.下列关于软件测试的目的的叙述中错误的是 【 】(分数:2.00)A.软件测试是为了发现错误而执行程序的过程B.一个好的测试用例是指可能找到迄今为止尚未发现的错误的用例C.一个成功的测试是发现了软件的新功能D.测试要以发现错误为中心,而不是演示正确的功能二、填空题(总题数:10,分数:20.00)16.数据结构研究的主要内容包括数据的逻辑结构、 1 以及它们之间的相互运算。(分数:2.00)填空项 1:_17.我们把计算机加工的对象(原料)叫 1。(分数:2.00)填空项 1:_18.一个算法的 1 是求解问题的算法所耗时间的程
5、度。(分数:2.00)填空项 1:_19.下面的程序段的时间复杂度是 1。 void fun(int n) int i=1; while(istdioh int n,b ; int fun(int b,int n) int i,r=1; for(i=0; ;i+) r=r*bi: return r; main() int x,a =1,2,3,4,5,6,7,8; ; printf(“dn“,x); (分数:2.00)_32.以下 fun 函数的功能是:累加数组中各元素的值。n 为数组中元素的个数,累加的和值放入 x 所指的存储单元中。 fun(int b ,int n,int*x) int
6、k,r=0; for(k=0;k_33.下面程序的执行结果是_。 #include struct stru int x; char ch; ; main() struct stru a=10,x; printf(“d,cn“,ax,ach); (分数:2.00)_五、程序设计题(总题数:2,分数:4.00)34.从键盘输入若于个字符,分别统计其中字母、空格、数字字符和其他字符的个数。(分数:2.00)_35.从键盘输入字符串 a 和字符串 b,实现在字符串 a 中的最小元素后面插入字符串 b。(分数:2.00)_全国自考(计算机软件基础)-试卷 7 答案解析(总分:70.00,做题时间:90
7、分钟)一、单项选择题(总题数:15,分数:30.00)1.有以下程序: #include main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“d,d,dn“,x,y,z); 程序运行后的输出结果是 【 】(分数:2.00)A.2,3,3B.2,3,2C.2,3,1 D.2,2,1解析:解析:z=x+是先把 x 的值赋给 z,所以 z=1,然后再把 x 加 1 赋 x,所以 x=2,y+后 y=2,+y 后y 又加 1,所以 y=3。2.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是 【 】(分数:2.00)A.+x,y=x- B.x+1
8、=yC.x=x+10=x+yD.double(x)10解析:3.以下不能正确表示代数式 (分数:2.00)A.2*a*bcdB.a*bcd*2C.acd*b*2D.2*a*bc*d 解析:解析:C 语言中*和的优先级相同,且结合顺序是由左向右,由此判断选项 D 不能正确表示题目中的代数式。4.与语句 if(ab)if(bc)x=1;else x=2;不等价的是 【 】(分数:2.00)A.if(ab)if(bc)x=1;else x=2;B.if(ac)x=1;else x=2;C.if(ab)&(bc)x=1;else x=2; D.if(ab)&(bc)x=1;else if(ab)&(b
9、b 成立且 be 成立时,x 为 1;ab 成立且 bc 不成立时,x 为 2;ab 不成立时,x 不变。按照这个功能检查给出的 4 个备选答案,只有 C 选项不符合要求。5.执行语句 for(k=2;+kA.2B.4C.5D.6 解析:解析:第 1 次循环时,循环判断条件为“+kdataaD.Pdataa解析:解析:结构变量 data 有两个成员 a 和 b,结构指针变量 p 指向结构变量 data。引用结构变量 data的成员有两种方法:一是直接由变量 data 引用其自己的成员 a,写成 dataa;二是通过指针变量 P 引用它所指的结构变量的成员,这又有两种写法,分别是 p 一a 和(
10、*p)a。10.在以下的数量级中,数量级最高的是 【 】(分数:2.00)A.O(n 2 ) B.O(n)C.O(nlog 2 n)D.O(1)解析:11.下列有关线性表的叙述中,正确的是 【 】(分数:2.00)A.一个线性表是 n 个数据元素的有限序列 B.线性表中任何一个元素有且仅有一个直接前趋C.线性表中任何一个元素有且仅有一个直接后继D.以上说法都不正确解析:12.一个栈的进栈数据元素序列为 1、2、3、4、5,则不可能为该栈的出栈序列的是 【 】(分数:2.00)A.2、3、4、1、5B.1、5、4、3、2C.2、3、1、4、5D.5、4、1、3、2 解析:解析:选项 D 中 5
11、为最先出栈的元素,则说明 1、2、3、4 都已经依次入栈,则出栈次序只能是4、3、2、1。1 为栈底元素,只能最后出栈,不可能在 3、2 之前出来。13.在有 n 个叶子节点的哈夫曼树中,其节点总数为 【 】(分数:2.00)A.不确定B.2nC.2n+1D.2n1 解析:解析:哈夫曼树足二又树,因此二又树的性质适用于哈夫曼树。因为哈夫曼树中没有度为 1 的节点,所以度为 2 的节点的个数为 n 一 1 个,节点总数=n+(n 一 1)=2n1。14.在顺序表2,5,7,10,14,1 5,18,23,35,41,52)中采用折半查找法查找 14 需做【 】次关键字比较。(分数:2.00)A.
12、5B.4 C.3D.2解析:解析:进行比较的关键字依次是:15、7、10、14。15.下列关于软件测试的目的的叙述中错误的是 【 】(分数:2.00)A.软件测试是为了发现错误而执行程序的过程B.一个好的测试用例是指可能找到迄今为止尚未发现的错误的用例C.一个成功的测试是发现了软件的新功能 D.测试要以发现错误为中心,而不是演示正确的功能解析:解析:一个成功的测试是发现了至今尚未发现的错误的测试。二、填空题(总题数:10,分数:20.00)16.数据结构研究的主要内容包括数据的逻辑结构、 1 以及它们之间的相互运算。(分数:2.00)填空项 1:_ (正确答案:正确答案:物理结构(存储结构))
13、解析:17.我们把计算机加工的对象(原料)叫 1。(分数:2.00)填空项 1:_ (正确答案:正确答案:数据)解析:18.一个算法的 1 是求解问题的算法所耗时间的程度。(分数:2.00)填空项 1:_ (正确答案:正确答案:时间复杂度)解析:19.下面的程序段的时间复杂度是 1。 void fun(int n) int i=1; while(istdioh int n,b ; int fun(int b,int n) int i,r=1; for(i=0; ;i+) r=r*bi: return r; main() int x,a =1,2,3,4,5,6,7,8; ; printf(“d
14、n“,x); (分数:2.00)_正确答案:(正确答案:i=a&c=A&=0&c=9) digit+; else others+; printf(“all in all=char=d space=d digit=d others=dn“,letters,space,digit,others); 31)解析:35.从键盘输入字符串 a 和字符串 b,实现在字符串 a 中的最小元素后面插入字符串 b。(分数:2.00)_正确答案:(正确答案:#include #include void main() char a50,b20; int i=0,min=0,lena,lenb; printf(“please input string a:“); gets(a); printf(“please input string b:“); gets(b); while(ai!一!0) if(aimin;i-) ai+lenb=ai for(i=0;i解析: