杭州师范大学2017年考研825计算机基础自命题试卷试题
考试科目代码:825
考试科目名称:计算机基础
说明:考生答题时一律写在答题纸上,否则漏批责任自负。
第一部分:程序设计基础(C语言)
一、判断题(每小题2分,共20分)
1、C语言的标识符是区分大小写的。( )
2、在编译C源程序时,计算机根本不会去识别各个变量名的具体含义,因此命名规范对编写C程序而言不是必要的,而且有可能会降低编写C源程序的效率。( )
3、C语言中,注释不可以出现在程序中任意的地方。( )
4、C语言程序中的变量必须先声明后使用。( )
5、在C语言中,'B'和"B"在内存中的表示没有区别。( )
6、一个复合语句是作为一个语句处理的且在逻辑上相互关联的一组语句。( )
7、C语言程序的三种基本结构是顺序结构、分支(选择)结构和循环结构。( )
8、C语言的double类型数据可以精确表示任何实数。( )
9、在C语言中,将语句“if(x==5) y++;”误写作“if(x=5) y++;”,将导致编译错误。( )
10、在switch语句中,表达式和常量表达式的值只能是整型、字符型或枚举型。( )
二、单项选择题(每小题2分,共40分)
1、程序的开发步骤中不包括( )。
A. 撰写文档 B. 程序测试 C. 编译链接 D. 运行程序
2、以下( )为有效变量名。
A. 234@@ B. 1926sum C. a&bdef D. _counter
3、以下符合C语言语法的浮点型(实型)型常量是( )。
A. 1.2e0.5 B. 3.14.159e C. 5e-3 D. e15
4、如果c的类型为int且值为 10,则 c / 3 + c % 6结果为( )。
A. 7 B. 6 C. 6.333333 D. 7.333333
5、如果a的类型为int且值为 12,b的类型为int且值为 5,d的类型为double且值为24.0,则 d / (a / b) 的类型及值为( )。
A. int,10 B. double,12.000000 C. int,12 D. double,10.000000
6、已知:int x, y; double z; 则以下语句中错误的是( )。
A. scanf("%2d*%d%lf", &x, &y, &z);
B. scanf("%x%*d%o", &x, &y);
C. scanf("%d,%lx,%le", &x, &y, &z);
D. scanf("%x%o%6.2f", &x, &y, &z);
7、以下程序的输出结果是( )。
#include int main(void) {
int a = 1234;
printf("%2d\n", a);
return 0;
}
A. 1234 B. 提示出错、无结果 C. 12 D. 34
8、以下非法的赋值语句是( )。
A. n=++i; B. x=(j--); C. ++(i+1); D. j++;
9、已知:int x=5,y=5,z=5; 执行语句:x%=y+z; 后,x的值是( )。
A. 0 B. 5 C. 6 D. 1
10、“变量 a 的值为 5 或是 6” 应表示为( )。
A. a = 5||a = 6 B. a == 5||a == 6
C. a == 5&&a == 6 D. a == 5||== 6
11、下列( )循环保证至少执行一次。
A. for B. do while C. while D. 以上皆是
12、有以下代码段:
int k=0;
while(k=1)
k++;
while循环执行的次数是( )。
A. 无限次 B. 有语法错,不能执行
C. 一次也不执行 D. 执行一次
13、语句for(i = 1; i < 10; ++i); 执行结束后,i的值是( )。
A. 11 B. 12 C. 9 D. 10
14、在C语言的一个源程序文件中,main函数的位置( )。
A. 必须在系统调用的库函数的后面 B. 必须在程序的最开始
C. 必须在程序的最后 D. 可以任意
15、如果i是变量,而p是指向i的指针,则下列表达式( )可以代替i。
A. *&p B. &I C. &*I D. *&i
16、两个指针变量,所指的类型相同,则它们之间不能进行的运算是( )。
A. < B. - C. + D. ==
17、执行下列语句:int x[5], *p = x; p += 2; 则指针变量p指向数组x的( )元素。
A.x[2] B.x[3] C.x[0] D.x[1]
18、若二维数组a有m列,则在a[i][j]之前的元素个数是( )。
A. j * m + i B. j * m + i - 1 C. i * m + j D. i * m + j - 1
19、以下说法错误的是( )。
A. 在一个结构内不能包含另一个不同类型的结构作为其成员
B. 用指向结构变量的指针做函数参数,是将结构变量的地址传给被调函数,因此在被调函数中对结构内容的修改会影响原结构变量
C. 和整型、实型、字符型一样,void类型也是一种基本数据类型
D. 结构在内存中所占的字节数不仅与所定义的结构类型有关,还与计算机系统本身有关
20、以下叙述中,错误的是( )。
A. 顺序读写方式不适用于二进制文件
B. 对二进制文件的访问速度比文本文件快
C. 文本文件以ASCⅡ码形式存储数据
D. 随机读写方式不适用于文本文件
三、综合应用题(每小题5分,共15分)
1、以下程序的输出结果是________。
#include void m(int x, int y[]) {
x = 3;
y[0] = 3;
}
int main(void) {
int x = 0;
int y[1];
m(x, y);
printf("%d#%d\n", x, y[0]);
return 0;
}
2、以下程序的输出结果是________。
#include #include struct NODE {
int num;
struct NODE *next;
};
int main(void) {
struct NODE *p, *q, *r;
int sum = 0;
p = (struct NODE *)malloc(sizeof(struct NODE));
q = (struct NODE *)malloc(sizeof(struct NODE));
r = (struct NODE *)malloc(sizeof(struct NODE));
p->num = 1;
q->num = 2;
r->num = 3;
p->next = q;
q->next = r;
r->next = NULL;
sum += q->next->num;
sum += p->num;
printf("%d\n", sum);
return 0;
}
3、下列程序执行后,文件example.txt中内容是________。
#include #include void fun(char *filename, char *str) {
FILE *fp;
int i;
fp = fopen(filename, "w");
for(i = 0; i < strlen(str); ++i)
fputc(str[i], fp);
fclose(fp);
}
int main(void) {
fun("example.txt", "gelivable");
fun("example.txt", "awesome");
return 0;
}
第二部分:数据结构
一、单选题(每小题2分,共40分)
1、下列程序段的时间复杂度为( )。
count = 0;
for (k = 1; k <= n; k *= 2)
for (j = 1; j <= n; j++)
count++;
A、O(log2n) B、O(n) C、O(nlog2n) D、O(n2)
2、设顺序线性表中有n个数据元素,则删除表中第i个元素需要移动( )个元素。
A、n-i B、n+l -i C、n-1-i D、i
3、一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( )。
A、edcba B、decba C、dceab D、abcde
4、下列选项中,可以使用二分法查找(binary search)的关键字序列是( ),假设所有数据均保存的数组中。
A、500, 200, 450, 180 B、500, 450, 200, 180
C、180,500,200,450 D、180, 200, 500,450
5、循环队列SQ的存储空间是数组d[m],队头、队尾指针分别是front和rear,则执行出队列操作后其头指针front值是( )。
A.front=front+1 B. front=(front+1)%(m-1)
C. front=(front-1)%m D. front=(front+1)%m
6、设二维数组A[m][n]按行优先顺序存储,如果A[0][0]的地址是LA,每个元素占1个字节,则元素A[i][j]的地址为( )。
A、LA+(i*m+j) B、LA+(i*n+j) C、LA+[(i-1)*n+j-1] D、LA+[(i-1)*m+j-1]
7、用“左孩子-兄弟”(left child right sibling)表示法作为树的存储结构,一棵结点个数大于2的树转化为二叉树后( )。
A、二叉树的根仅含左子树 B、二叉树的根仅含右子树
C、二叉树的根既含左子树又含右子树 D、以上三种情况均可能
8、对右边的二叉树做中序遍历(inorder traversal)的结果是( )。
A、debxac B、abdexc C、edxbca D、abcdxe
9、设线性表的长度为n,则顺序查找成功的平均比较次数为( )。
A、n B、n/2 C、(n+1)/2 D、(n-1)/2
10、在下列排序算法中,平均时间复杂度为O(nlog2n)的是( )。
A、直接插入排序(Insertion sort) B、快速排序(Quick sort)
C、起泡排序(Bubble sort) D、基数排序(radix sort)
11、在下列排序算法中,需要线性附助空间O(n)的算法是( )。
A、堆排序(Heap sort) B、归并排序(Merge sort)
C、快速排序(Quick sort) D、希尔排序(Shell sort)
12、如果G是一个共有n个顶点的有向完全图,则该图中共有( )条弧。
A、(n2-1)/2 B、n(n-1) / 2 C、n(n-1) D、n2-1
13、用Dijkstra算法求无向网的单源点最短路径,假设用邻接矩阵作为图的存储结构,则算法的时间复杂度为( )。
A、O(n + e) B、O(n) C、O(n2) D、O(n*e)
其中:n为图中的顶点数,e为图中边的个数。
14、对下图的有向图进行拓扑排序,得到的拓扑序列可能是( )。
A、 3,1,2,6,4,5 B、3,1,2,4,6,5 C、3,1,4,2,5,6 D、3,1,4,2,6,5
15、二叉树的第 k层的结点数最多为( )。
A、2k-1 B、2K+1 C、2K-1 D、 2k-1
16、设有 6 个顶点的有向图,该图至少应有( )条边才能确保是一个连通图。
A、6 B、5 C、7 D、8
17、已知单链表A长度为m,单链表B长度为n,若将B连接到A的末尾,在没有链尾指针的情况下,算法的时间复杂度为( )。
A、O(1) B、O(n) C、O(m) D、O(m + n)
18、对一棵完全二叉树进行层序(从上到上,从左到右)从1开始编号。则编号为n的结点若存在右孩子,其位置是( )。
A、2n B、 2n-1 C、2n+1 D、
19、单链表和双向循环链表表示List时常常增加一个头结点,其目的是( )。
A.为了简化查找算法 B.为了简化归并算法
C.为插入删除操作时不需要做特殊的处理 D.以上说法都不对。
完整版附件下载: