1、全国自考(计算机软件基础)-试卷 4及答案解析(总分:62.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.下列不是 C语言提供的合法关键字的是 【 】(分数:2.00)A.switchB.beginC.caseD.default2.设 ch是 char型变量,其值为A,则下面表达式的值是 【 】 ch=(ch=A&8Lchy) if(yA.331B.41C.2D.15.若要求从键盘输入含有空格字符的字符串,应使用函数 【 】(分数:2.00)A.getc()B.gets()C.getchar()D.scanf()6.下列程序的运行结果是 【 】 #includ
2、e int x=1; int fun(int a) static int b=1; b+=a+x; return b; main() int i=2; for(i=0;iA.2 2B.2 3C.2 4D.2 57.若有定义语句:int x=0,*p=x;,则语句 printf(“dn“,*p);的输出结果是 【 】(分数:2.00)A.随机值B.0C.x的地址D.p的地址8.设有下列定义语句,则下列说法中正确的是 【 】 struct abcint x;char y; struct abc s1,s2;(分数:2.00)A.在编译时发生错误B.能顺利通过编译,但是连接时出错C.能顺利通过编译、
3、连接,但不能执行D.能顺利编译、连接和执行9.下面程序的时间复杂度为 【 】 for(i=1;inext=NULLC.headnext=headD.head!=NULL11.若一个队列的入队序列是 1、4、2、3,则该队列的出队序列是 【 】(分数:2.00)A.4、3、2、1B.1、2、3、4C.1、4、2、3D.3、2、4、112.判定一个循环队列 Q(元素个数最多为 m 0 )为空的条件是 【 】(分数:2.00)A.Q一front=Q 一rearB.Q一front!=Q 一rearC.Q一front=(Q 一rear+1)m 0D.Q一front!=(Q 一rear+1)m 013.深
4、度为 4的二叉树最多有多少个节点 【 】(分数:2.00)A.14B.15C.16D.1714.设待排序的序列中有 n个元素,采用冒泡排序方法进行一趟排序所需交换元素的次数最多为 【 】(分数:2.00)A.nB.0C.n+1D.n一 115.以下叙述中正确的是 【 】(分数:2.00)A.可行性研究属于软件开发阶段B.概要设计属于软件定义阶段C.编码属于软件维护阶段D.详细设计属于软件开发阶段二、填空题(总题数:10,分数:20.00)16.以下程序段的输出结果是 1。 #include main() int a=2,b=3,c=4; a*=16+(b+)一(+c); printf(“dn“
5、,a); (分数:2.00)填空项 1:_17.已知 int a=1,b=2;,表达式!(a+b)a&b+2*4 的值是 1。(分数:2.00)填空项 1:_18.字符串的结束标记字符是 1。(分数:2.00)填空项 1:_19.变量的作用域是指变量的有效范围,在作用域内可以引用该变量。按作用域变量可以分为全局变量和 1变量。(分数:2.00)填空项 1:_20.在定义语句中,指针变量名前必须有“ 1”号。(分数:2.00)填空项 1:_21.若经常进行的运算为查找运算,以 1 存储为宜。(分数:2.00)填空项 1:_22.若一棵二叉树的叶子节点数为 n,则在该二叉树中,左、右子树皆非空的节
6、点个数为 1。(分数:2.00)填空项 1:_23.当无向图 G的顶点的度数的最大值大于或等于顶点数的 1 倍时,G 至少有一条回路。(分数:2.00)填空项 1:_24.具有 24个元素的序列,采用冒泡排序最少需要比较 1 次才能完成排序。(分数:2.00)填空项 1:_25.软件定义阶段形成的 1 是软件设计阶段的出发点。(分数:2.00)填空项 1:_三、程序分析题(总题数:4,分数:8.00)26.写出下列程序的运行结果。 #include main() int i=1,j=1; for(;j10)break; if(j2!=0) j+=3; continue; j 一=1; prin
7、tf(“d,dn“,i,j); (分数:2.00)_27.写出下列程序的运行结果。 #include void fun() static int a=0; a+=2: printf(“d“,a); main() int cc; for(cc=l;cc_28.下列程序的功能是求 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符 1,则输出 3,请填空完成程序。 #include #define M 81 int fun(char*ss,char c) int i=0; for(; ;ss+) if(*ss=c)i+: return ; main() ch
8、ar aM,ch; printf(“Please enter a string:“); gets(a); printf(“Please enter a char:“); ch=getchar();printf(“The number of the char is:dn“,fun(a,ch); (分数:2.00)_29.下列 fsum()函数的功能是求带头节点的单链表中各节点数据域中数值的和,填空完成程序。 struct node float x; struct node*next; ; f10at fsum(struct node*head) float s=0; struct node*q;
9、 ; while!=NULL) s=s+q 一x; return s; (分数:2.00)_四、程序设计题(总题数:2,分数:4.00)30.已知长度为 n的线性表 A采用顺序存储结构,并且数据元素按值的大小非递减排列,写一算法,删除该线性表中值相同的多余元素(该算法完成后,线性表中数据元素严格按值递增排列)。(分数:2.00)_31.编写一个算法,将一个顺序栈中的元素依次取出,并打印元素值。(分数:2.00)_全国自考(计算机软件基础)-试卷 4答案解析(总分:62.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.下列不是 C语言提供的合法关键字的是 【 】(
10、分数:2.00)A.switchB.begin C.caseD.default解析:2.设 ch是 char型变量,其值为A,则下面表达式的值是 【 】 ch=(ch=A&8Lch=A&ch=A&hy) if(yA.331B.41C.2D.1 解析:解析:在主函数中,第 2个 if语句只有在满足 xy这个条件后才被执行,因为 else语句总是和最近的 if语句配套,所以此程序在执行时,由于 xnext=NULLC.headnext=headD.head!=NULL解析:解析:不带头节点的单链表 head,它指向第一个数据节点,如果它指向的节点为空,则表明单链表为空。11.若一个队列的入队序列是
11、 1、4、2、3,则该队列的出队序列是 【 】(分数:2.00)A.4、3、2、1B.1、2、3、4C.1、4、2、3 D.3、2、4、1解析:12.判定一个循环队列 Q(元素个数最多为 m 0 )为空的条件是 【 】(分数:2.00)A.Q一front=Q 一rear B.Q一front!=Q 一rearC.Q一front=(Q 一rear+1)m 0D.Q一front!=(Q 一rear+1)m 0解析:13.深度为 4的二叉树最多有多少个节点 【 】(分数:2.00)A.14B.15 C.16D.17解析:解析:深度为 k的二叉树最多有 2 k 一 1个节点。14.设待排序的序列中有 n
12、个元素,采用冒泡排序方法进行一趟排序所需交换元素的次数最多为 【 】(分数:2.00)A.nB.0C.n+1D.n一 1 解析:解析:对 n个元素进行冒泡排序,每趋最多比较 n一 1次,假设每次都需要交换,最多可交换 n一 1次。15.以下叙述中正确的是 【 】(分数:2.00)A.可行性研究属于软件开发阶段B.概要设计属于软件定义阶段C.编码属于软件维护阶段D.详细设计属于软件开发阶段 解析:二、填空题(总题数:10,分数:20.00)16.以下程序段的输出结果是 1。 #include main() int a=2,b=3,c=4; a*=16+(b+)一(+c); printf(“dn“
13、,a); (分数:2.00)填空项 1:_ (正确答案:正确答案:28)解析:17.已知 int a=1,b=2;,表达式!(a+b)a&b+2*4 的值是 1。(分数:2.00)填空项 1:_ (正确答案:正确答案:1)解析:18.字符串的结束标记字符是 1。(分数:2.00)填空项 1:_ (正确答案:正确答案:0)解析:19.变量的作用域是指变量的有效范围,在作用域内可以引用该变量。按作用域变量可以分为全局变量和 1变量。(分数:2.00)填空项 1:_ (正确答案:正确答案:局部)解析:20.在定义语句中,指针变量名前必须有“ 1”号。(分数:2.00)填空项 1:_ (正确答案:正确
14、答案:*)解析:21.若经常进行的运算为查找运算,以 1 存储为宜。(分数:2.00)填空项 1:_ (正确答案:正确答案:顺序)解析:22.若一棵二叉树的叶子节点数为 n,则在该二叉树中,左、右子树皆非空的节点个数为 1。(分数:2.00)填空项 1:_ (正确答案:正确答案:n 一 1)解析:23.当无向图 G的顶点的度数的最大值大于或等于顶点数的 1 倍时,G 至少有一条回路。(分数:2.00)填空项 1:_ (正确答案:正确答案:2)解析:24.具有 24个元素的序列,采用冒泡排序最少需要比较 1 次才能完成排序。(分数:2.00)填空项 1:_ (正确答案:正确答案:23)解析:25
15、.软件定义阶段形成的 1 是软件设计阶段的出发点。(分数:2.00)填空项 1:_ (正确答案:正确答案:数据流图)解析:三、程序分析题(总题数:4,分数:8.00)26.写出下列程序的运行结果。 #include main() int i=1,j=1; for(;j10)break; if(j2!=0) j+=3; continue; j 一=1; printf(“d,dn“,i,j); (分数:2.00)_正确答案:(正确答案:10,12)解析:27.写出下列程序的运行结果。 #include void fun() static int a=0; a+=2: printf(“d“,a);
16、main() int cc; for(cc=l;cc_正确答案:(正确答案:246)解析:28.下列程序的功能是求 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符 1,则输出 3,请填空完成程序。 #include #define M 81 int fun(char*ss,char c) int i=0; for(; ;ss+) if(*ss=c)i+: return ; main() char aM,ch; printf(“Please enter a string:“); gets(a); printf(“Please enter a char:
17、“); ch=getchar();printf(“The number of the char is:dn“,fun(a,ch); (分数:2.00)_正确答案:(正确答案:*ss!=0 i)解析:29.下列 fsum()函数的功能是求带头节点的单链表中各节点数据域中数值的和,填空完成程序。 struct node float x; struct node*next; ; f10at fsum(struct node*head) float s=0; struct node*q; ; while!=NULL) s=s+q 一x; return s; (分数:2.00)_正确答案:(正确答案:q
18、=head 一next q=q 一next)解析:四、程序设计题(总题数:2,分数:4.00)30.已知长度为 n的线性表 A采用顺序存储结构,并且数据元素按值的大小非递减排列,写一算法,删除该线性表中值相同的多余元素(该算法完成后,线性表中数据元素严格按值递增排列)。(分数:2.00)_正确答案:(正确答案:void delete(L a,int itern) int i,m; i=0; while(i解析:31.编写一个算法,将一个顺序栈中的元素依次取出,并打印元素值。(分数:2.00)_正确答案:(正确答案:void popl(s) int x; while(stop!=一 1) x=s,datatop; printf(“d“,x); s 一top-; )解析: