02243 2011年自考计算机软件基础(一)练习题及答案
- 格式:doc
- 大小:167.00 KB
- 文档页数:12
全国2011年7月高等教育自学考试考前练习题计算机软件基础(一)(课程代码:02243)一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.能正确表示逻辑关系“a≥10或a≤O”的C语言表达式是 ( )A. a>=10 0r a<=0 B.a>=0|a<=10C.a>=10&&a<=O D.a>=10||a<=O2.请读程序如下,若运行时从键盘上输入9876543210↙(↙表示回车),则下列程序的输出结果是( )# include<stdio.h>main( ){ int a;float b,c;scanf(“%2d%3f%4f”,&a,&b, &e);printf(“\na=%d,b=%f,c=%f\n”,a,b,c);}A. a=98, b=765, c=4321B.a=10, b=432, c=8765C.a=98, b=765.000000, c=4321.000000D.a=98, b=765.0, c=4321.03.有如下程序:main( ){ float x=2.0,y;if(x<0.0)y=0.0;else if(x<10. 0)y=l.0/x;else y=l.0;printf(“% f\n”,y);}该程序输出结果是 ( )A.O. 000000 B.0.250000C.0.500000 D.1.0000004.有如下程序:main( ){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=O;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+ =a[i][j];printf(“% d\n”, s);}该程序的输出结果是 ( )A. 18 B.19C.20 D.215.下列程序的输出结果是 ( )int f( ){ static int i = 0 ;int s=1:s+=i;i++:return s;}main( ){int i,a=O;for(i=O;i<5;i+ +)a+ = f( );printf(“% d\n” ,a);}A.20 B.24C.25 D.156.设有定义:int n1=O,n2,*p=&n2,*q=&n1;,则以下赋值语句中与n2=n1;语句等价的是( ) A.*p=*q; B.p=q;C.*p=&n1;D.p=*q;7.若有以下程序:# include<stdio.h>void f(int n);main( ){void f(int n);f(5);}void f(int n){ printf(“%d\n”,n);}则以下说法中不正确的是 ( )A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数fC.对于以上函数程序,编译时系统会提示出错信息;提示对f函数重复说明D.函数f无返回值,所以可用void将其类型定义为无值型8.有如下程序:main( ){int a[ ]={2,4,6,8,10},y=0,x,*p;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf(“% d\n”,y);}则程序运行后的输出结果是( )A. 10B. 11C. 14D. 159.非空的循环单链表head的尾节点(由p所指向)满足 ( )A. p→next = NULLB. p=NULLC. p→next=headD.p=head10.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA 开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为 ( )A.SA+141 B.SA+144C.SA+222 D.SA+22511.具有5层节点的完全二叉树至少有个节点。
( )A.16 B.12C.15 D.1712.如下图所示的t2是由树t1转换而来的二叉树,那么树t1有个叶子节点。
( )A.4 B.5C.6 D.713.有一个长度为12的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为( )A. 35/12B. 37/12C. 39/12D. 43/1214.程序的三种基本控制结构的共同特点是( )A.不能嵌套使用B.只能用来写简单程序C.已经用硬件实现D.只有一个入口和一个出口15.为了提高测试的效率,应该 ( )A.随机地选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划D.选择发现错误可能性大的数据作为测试数据第二部分非选择题二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
16.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是____。
17.下列函数值的类型是____。
fun(float x){ float y;y=3* x—4;return y;}18.若有定义语句:char s[l00],d[1OO];int j=O,i=O;,且s中已赋字符串,请填空以实现复制。
(注:不使用逗号表达式)while(s[i]){ d[j]=____;j++;}d[j] =0;19.有如下定义:struct{int x;char * y;}a[2]={{1,“abc”},{2,“def”}}, * p=a;则p→y的值____;(++p)→y的值____。
20.在一个单链表中,若删除p所指节点的后继节点,则执行____。
21.若已知一个栈的入栈序列是1,2,3,……,n,其输出序列为pl,p2,p3,……,pn,若pl =n,则pi为 ____。
22.设n,m为一棵二叉树上的两个节点,在中序遍历时,n在m前的条件是____。
23.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是____。
24.数组A[5][6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5][5]的地址为____。
25.对于长度为n的线性表,若进行顺序查找,则时间复杂度为____;若采用二分法查找,则其ASL为____。
三、解答题(本大题共4小题,每小题4分,共16分)26.下列函数的功能是:在一个带头节点的单向链表中,查找元素最大的节点并输出。
请将该函数补充完整。
typedef int datatype;struct node{ datatype data;struct node * next;};typedef struct node LinkList;void search(LinkList * h){List *q,*pmax, *s;pmax = h→ next;q= pmax→next;while( ){if(q→data>pmax→data)pmax = q;q = q→next;}printf (“最大值是% d”, pmax→data);}27.已知某图的顶点集和边集如下所示,请画出该图。
V={v1,v2,v3,v4)E={<v1,v2>,<v1,v3>,<v4,v1>,<v4,v2>,<v4,v3>}28.对于下图,分别写出按深度优先和广度优先搜索的结果。
29.假设现有电文“ACBCCACBCCDCBC”,其中出现的字符为“A”,“B”,“C”,“D”,它们出现的次数分别为2,3,8,1。
要求画出由此得到的哈夫曼树及其编码。
四、程序分析题(本大题共4小题,每小题4分,共16分)30.写出下列程序的输出结果。
main( ){int a[4][5]={{1,2,3,4,0},{2,3,O,O,O},{3,4,5,O,0},{6,0,O,O,O}};int j,k;for(j=O;j<4;j++)for(k=0;k<5;k++){if(a[j] [k]==0)break;printf(“%d”,a[j][k]);}printf(“\n”);}}31.写出下列程序的输出结果。
main( ){int *p1,*p2,*p,a=5,b=8;p1=&a;p2=&b;if(a<b) {p=pl;pl=p2;p2=p;}printf(“%d,%d,”,*p1,*p2);printf(“%d,%d”,a,b);}32.写出下列程序的输出结果。
void sort(int a[ ],int n);for(i=O;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t= a[i];a[i]=a[j];a[j]=t;}}main( ){int aa[10]={1,2,3,4,5,6,7,8,9,10),i;sort(&aa[3],5);for(i=0;i<lO;i+ +)printf(“ %d,”,aa[i]);printf(“\n”);}33.阅读程序段,若串s为“pcs389%+-ac”,写出调用reverse(buf)后buf的内容。
char buf[ ]reverse(char * s){int c,k;char * pk= strlen(s) ;for(p=s+k-1;s<p;s++,p--){c= * s;*s=*p;*p=c;}}五、程序设计题(本大题共2小题,每小题9分,共18分)34.输入三个整数,按由小到大的顺序输出(要求用指针处理)。
35.假设二叉树采用链接存储方式存储,编写一个后序遍历二叉树的非递归函数。
全国2011年7月高等教育自学考试考前练习题计算机软件基础(一) 答案(课程代码:02243)一、单项选择题1.D【解析】c语言中的“或”关系用“‖”表示,其他相关逻辑运算符“与”用“&&”表示;运算符“非”用“!”来表示2.C3.C【解析】本题考查的是if…else语句的使用。
x=2.o,符合第二个IF语句的条件x<10.0,所以执行y=1.0/x语句,即y=l.0/2.0=0.500000。
4.A【解析】题中的外循环只执行了2次。
笫1次:a[1][O]=3,a[1][1]=4,所以s=7;第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。