1、福建专升本计科类真命题C 012009年福建省高职专升本科入学考试软件工程专业知识试卷计算机科学与技术(考试时间150分钟,满分300份,共三部分)答题说明:请将答案写在答题纸相应的位置上。注意事项:答案写在试卷上一律不给分。第一部分语言程序设计(共100分)一、单项选择题(本大题共30小题,每小题2份,共60份)在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。1.下列选项中,合法的C语言标识符是_。A. my_nameB. $234C. my nameD. 23b2.已知:int x= 5;执行完printf(%d,+x);后,输出的结果是:_。A
2、. 4B. 5C. 6D. 不确定3.已知:int x = 5,y = 3;则逻辑表达式(x-y)&(y-3)的值为_。A. 7B. 2C. 1D. 04.已知:int a = 3,b = 6,c = 8;则执行完语句:a=ab?a(b 0) x *= 2; y /= 3; printf(%d,%d,x,y);A. 8,0B. 16,0C. 32,0D. 64,09.如下选项中正确的数组定义是_。A. #define m 10; static int am = 3,4,5,6;B. static int a2 = 3,4,5,6C. static int a10 = 3,4,5,6;D. in
3、t m = 4; static int am = 3,4,5,610.执行程序段:char str12; scanf($s,str);如果输入如下字符串(其中表示空格):whatsyourname?则str的值是_。A. whatsB. whatsC. whatsyourD. whatsyourname?11.如下程序段的运行结果是_。main() int i = 5,sum = 100; do sum = sum + (-i);while(i = 0); printf(%d,sum);A. 100B. 109C. 105D. 11012.如下程序段的运行结果是_。main() int i;
4、for(i = 1; i name = ddd; p-score = 66.0; p-age = 15;D. p = &stu1; p.name = ddd; p.score = 66.0; p.age = 15;22.下面程序段中语法正确的是_。A. int mm(int x,int y) int x,y; return x + y;B. char str10; scanf(%s,&str);C. int i,a10;for(i = 0; i = 10; i+) scanf(%d,&ai);D. int i,a10,*p;for(i = 0,p = a;p 0)C. !(a = 1)D. (
5、a = 1)24.若变量已经正确定义,要求程序段完成1到100的累加,下列选项中不能完成此功能的程序段是_。A. for(i = 1,sum = 0; i = 100; i+) sum = sum + i;B. i = 1;sum = 0; while(i+ = 100) sum = sum + i;C. for(i = 1; i = 100; i+) sum = 0; sum = sum + i;D. i = 1; sum = 0; dosum = sum + i;while(+i = 100);25.已知int k;且k已经正确赋值,则下列表达式中存在语法错误的是_。A. 2 k 6B.
6、(k 6)+C. k2D. k = 126.如下程序段的输出结果是_。main() int i,j,a = 0; for(i = 1; i = 5; i+) for(j = i; j = 5; j+) a = a + j; printf(%d,a);A. 10B. 25C. 55D. 7527.语句:printf(%-8.4d,-36);执行时的输出结果是(表示空格)_。A. -0.36B. -036C. -036D. -03628.如下程序段的输出结果是_。main() int a10 = 34,22,12,66,8,33,22,338,56,99; int i,x = 0; for(i =
7、 1; i 10; i+) if(ai ax) x = i; printf(%d,ax);A. 8B. 34C. 99D. 33829.如下程序段的输出结果是_。main() char str = s,t,u,d,e,n,t,0; char *q = str; while(*q != 0) q+; printf(%d,q-str);A. 5B. 6C. 7D. 830.如下程序段的输出结果是_。#define n 5struct student int no; float score;main() struct student strn = 1,12.5,2,55.5,3,90.5,4,78.
8、0,5,34.0; int i; float a = 0,b; for(int = 0 i n; i+) a += stui.score; b = a / n; printf(%08.4f,b);A. 0054.1000B. 054.1000C. 0054.1D. 54.10000二、程序阅读题(本大题共4小题,每小题5份,共20分)阅读下列程序,请将运行时输出的结果写在答题纸相应的位置上。31./* 程序段中表示空格 */#include void main() char str1 = goodmorning!,str220; char *p,*q; for(p = str1; *p !=
9、0; p+); for(q = str2; -p = str1; q+) *q = *p; *q = 0; printf(%s,str2);32.#include #define n 10void de(int a,int x,int *m) int i = x + 1; for(; i = *m; i+) ai-1 = ai; *m = *m - 1;void main() static int an = 32,12,12,56,78,12,78,5,32,12; int i,j,x,m = n - 1; for(i = 0; i = m; i+) x = ai; for(j = i + 1
10、; j = m; j+) if(aj = x) de(a,j,&m); for(i = 0; i = m; i+) printf(%d,ai);33.#include void ch(int *a,int *b) int c; c = *a; *a = *b; *b = c;void main() static int a10 = 32,5,18,56,98,52,78,15,132,112; int x = 0,y = 1,i; if(ax ay) ch(&x,&y); for(i = 2; i 10; i+) if(ai ay) y = i; ch(&ax,&ay); for(i = 0;
11、 i 10; i+) printf(%d,ai);34.#include void main() char str = 0342201411; static int a10; int i; char *p; for(i = 0; i 10; i+) ai = 0; for(p = str; *p != 0; p+) i = *p - 0; ai+; for(i = 0; i 10; i+) printf(%d,ai);三、完善下列程序(本大题共2小题,每空4分,共20分)请将答案写在答题纸相应的位置上。35.下面程序求一个二维矩阵的最大值。#include #define m 3#define
12、 n 4int findmax(int an) for(i = 0; i m; ) for(j = 0; j max) max = aij; ;void main() int i,j,max, ; for(i = 0; i m; i+) for(j = 0; j n; j+) scanf(%d,&aij); max = findmax(a); printf(%d,max);36.下面程序找出100-200之间的全部素数。#include #include void main() int m,k,i; for(m = 101; m = 200; m = m +2) k =sqrt(m); for
13、(i = 2; i k) printf(%d,m); 第二部分数据结构(共100分)四、单项选择器(本大题共12小题,每小题2分,共24分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。1.要表示高校的校、系、班级的有关数据及其关系,选择_比较合适。A. 线性结构B. 树结构C. 图结构D. 集合结构2.下列函数中渐进时间复杂度最小的是 。A. B. C. D. 3.已知一个栈s以及一个输入数列(A,B,C,D,E),每个元素按照A,B,C,D,E顺序进栈一次,进栈后可立即出栈,也可在栈中停留一段时间后再出栈,则不能得到 序列。A. A,B,C,D
14、,EB. B,A,E,D,CC. C,B,A,D,ED. D,C,A,B,E4.平均排序效率最好的排序方法是 。A. 直接插入排序B. 快速排序C. 简单选择排序D. 冒泡排序5.某链表中最常用的操作时在已知的一个结点之前插入一个新节点和删除其之前一个结点,则采用 存储方式最节省运算时间。A. 双向链表B. 带头指针的单向链表C. 带尾指针的单向链表D. 单向循环链表6.在逻辑结构不变的情况下,不是导致一个图的遍历序列不唯一的因素是 。A. 出发点不同B. 存储(物理)结构不同C. 遍历方法不同D. 画法不同7.散列函数有一个共同的要求,即函数值应当尽量以 取其值的每个值。A. 最大概率B.
15、最小概率C. 正太分布概率D. 均等概率8.下面 方法可以判断出一个图中是否存在环(回路)。A. 排序B. 深度和广度遍历C. 求最短路径D. 求关键路径9.最佳二叉搜索(排序)树是 。A. 关键码个数最小的二叉搜索树B. 退化为线性的二叉搜索树C. 搜索中平均比较次数最小的二叉搜索树D. 任何节点的度数为0或2的二叉搜索树10. 是数据的基本单位,即数据集合(对象)中的个体。A. 数据结构B. 数据项C. 数据元素D. 数据对象11.(线性)表是一个 。A. 有限序列,可以为空B. 有限序列,不能为空C. 无限序列,可以为空D. 无限序列,不能为空12.树是结点的集合,它 根节点。A. 有0
16、个或1个B. 有0个或多个C. 有且只有1个D. 有1个或1个以上。五、填空题(本大题共7小题,每空2分,共16分)13.在有n个顶点的有向图中,每个顶点的度最大可达 。14.以下程序段的时间复杂度是 。i = 0; j = 0;while(i + j j) j+; else i+;15.右图所示的二叉树后序遍历的结果是 。16.在一个双向链表中p所指节点之前插入一个由指针s所指的新节点,写出可执行的操作序列: 。(前指和后指的指针域分别为prior和next)17.(线性)表有两种村粗结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充: 存储密度较大,可以随机存取: 不可以随机
17、存取,插入和删除操作比较方便。18.递归的程序执行时使用 来保存各层递归调用时的现场信息,以保证可以正确返回。19.设数组aM(M为最大空间个数)作为循环队列Q的存储空间,front为队头指针(指向第一个存放数据的位置),rear为队尾指针(指向最后一个存放数据位置的下一个),则判定Q队列满条件是 。六、应用题(本大题共4小题,每小题10分,共40分)请将答案写在答题纸相应的位置上20.设字符集D=A,B,C,D,E,各字符使用频率W=10,2,5,6,4。画出对字符进行哈夫曼编码时所对应的哈夫曼树,并给出各字符的编码。21.用普利姆(Prim)算法从右图中的顶点1开始逐步构建最小支撑(代价生
18、成)树,要求画出构造的每一步。22.给定待排关键字集合为23,14,48,25,5,19,按关键字非递减(从小到大)排序,写出采用冒泡排序的每一趟(最外层循环的每一次)排序结果。23.1) 图示表示右边有向图的邻接表。2) 写出从顶点1开始分别进行深度优先遍历的顶点序列各一种。七、算法设计题(本大题共2个小题,每小题10分,共20分)请将答案写在答题纸相应的位置上。24.假定用一个有头结点循环链表来存储一个有序的线性表,线性表从头到尾为非递减(从小到大)有序(如下图。)用指针current从head开始搜索数据域等于key的元素在线性表位置,如果搜索成功则current指向搜索到的结点,函数返回该指针;如果搜索不成功,函数返回空指针NULL。请在函数SortedlistLocate(head,key)内天空,完成下列算法以实现这种搜索,并使得搜索不成功的平均次数小于链表长度。typedef struct node elemtype data; / 数据域 struct node *next; / 指针域lnode,*linklist;link SortedlistLocate(linklist head,elemtype key) linklist current; if( (1) ) return ERROR; / 错误提示 c
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2