东北大学——考研初试——计算机842——2019年
发布时间
阅读量:
阅读量
计算机842(150分)
-
第一部分 C语言程序设计(75分)
-
- 一、简答题(15分,4小题)
- 二、综合题(20分,4小题)
- 三、编程题(40分,3小题)
-
第二部分 数据结构(75分)
-
- 一、简答题(34分,4小题)
- 二、编写算法(41分,3小题)
第一部分 C语言程序设计(75分)
一、简答题(15分,4小题)
- (5分)若定义
int a[10];
int* p = a;
请写出至少3种求数组a第i个元素的方式。
- (5分)如果想通过一个函数获得多个返回值,请至少写出2种实现方法,并举例说明。
- (5分)举例说明结构体和共同体的区别。
二、综合题(20分,4小题)
- (5分)写出下面程序的运行结果
#include <stdio.h>
void f(int a) {
int i;
if (a != 0) {
f(a - 1);
for (i = 1; i <= a; i++) {
printf("%d", a);
}
printf("\n");
}
}
int main() {
f(3);
return 0;
}
- (5分)写出下面程序的运行结果
#include <stdio.h>
int main() {
int s = 0, i, j;
int a[5][3]= {14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
for (i = 0; i < 5; i++) {
s = 0;
for (j = 0; j < 3; j++) {
if (i * j % 5 == 3) {
break;
} else {
s = s + a[i][j];
}
}
printf("%d\n", s);
}
return 0;
}
3、(5分)写出下面程序的运行结果
#include <stdio.h>
void fun(char* s) {
int i;
for (i = 0; *(s + i) != '\0'; i++) {
if (*(s + i + 2) >= 'A' && *(s + i) <= 'z') {
if (*(s + i + 2) == '\0') {
break;
} else {
*(s+i) = *(s+i+2);
}
} else {
*(s+i) = 'z';
}
}
}
int main() {
char str[] = "AgeefAI!";
fun(str);
puts(str);
return 0;
}
4、(5分)写出下面程序的运行结果
#include <stdio.h>
int a=30, b=50;
void func(int* p1, int* p2) {
p1 = &a;
*p2 = b;
}
int main() {
int i = 1, b = 5;
for (i = 1; i < 5; i++) {
func(&i, &b);
printf("%d, %d\n", i, b);
}
return 0;
}
三、编程题(40分,3小题)
- (13分)一个数的平方的层次数等于该数自身的自然数被称为自守数,例如5 * 5 = 25,25 * 25 = 625,9376 * 9376 = 87909376。求10000以内的所有自守数。
- (13分)编写一个函数int judgeM(int a[N][N]),判断给定的函数矩阵a[N][N]是否符合上三角矩阵条件。其中N代表N * N矩阵。如果符合上三角矩阵条件返回1,否则返回0。上三角矩阵的主对角线下方的元素都为0。如下:
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| 0 | 5 | 6 | 7 |
| 0 | 0 | 8 | 9 |
| 0 | 0 | 0 | 10 |
(14分)个人小金库消费记录按如下结构体定义:
struct Consume {
int id; //流水号。
unsigned pid; //消费项目标号,每个消费项目编号唯一。
char p[100]; //消费项目名称。
float cost; //消费项目金额。
}
请编写函数 void maxCost(struct Consume record[N]),统计在给定的消费记录struct Consume record[N]中总消费金额最多的消费项目,输出消费项目名称和对应项目的总消费金额。需要注意的是,每个项目可能发生多次消费行为,每次消费行为会形成一个消费记录。
第二部分 数据结构(75分)
一、简答题(34分,4小题)
- (8分)有一个二叉树按层次顺序放在一组数组中,如下图:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|
| A | C | B | E | D |
(1)写出该树的后序遍历序列
(2)画出该树的先序线索二叉树
- (8分)带权无向图的邻接矩阵如下图所示。画出邻接表和用Prim算法生成最小树的过程。
| ∞ | 1 | 1 | ∞ | ∞ | ∞ |
|---|---|---|---|---|---|
| 1 | ∞ | 1 | 2 | ∞ | ∞ |
| 1 | 1 | ∞ | ∞ | 3 | ∞ |
| ∞ | 2 | ∞ | ∞ | 1 | 1 |
| ∞ | ∞ | 3 | 1 | ∞ | 1 |
| ∞ | ∞ | ∞ | 1 | 1 | ∞ |
(8分)给出一组关键字T = {24, 19, 32, 43, 38, 13, 22, 20, 6, 18},写出下列算法从小到大排序时第一趟结束时的序列。
(1)希尔排序(第一趟排列的增量为5)
(2)堆排序(先建成一个堆,然后以堆顶取下一个元素后,将堆减少一项)
- (10分)写出对关键字序列{503, 087, 61, 512, 098, 897, 275, 653, 426}建立一棵平衡二叉树排序的过程,并写出调整平衡时的旋转类型,写出在多概率情祝下査找成功和査找失败的平均查找长度。
二、编写算法(41分,3小题)
-
(15分)给定一个单链表存储的互异整数数列,编写算法,求出所有的递増和递减序列的数目。例如数列7, 2, 6, 9, 8, 3, 5, 2, 1,可分为(7, 2) (2, 6, 9) (9, 8, 3) (3, 5) (5, 2, 1)共5个数列子数列,结果为5。
(1)写出该算法的基本思想
(2)写出该算法的实现 -
(12分)假设二叉树终止为x的结点不少于1个,采用二叉链表存储,编写算法,打印值为x的结点的所有祖先。
(1)写出该算法的基本思想
(2)写出该算法的实现 -
(14分)编写算法,判断一个以邻接表为存储结构的无向图G是否连通,若连通,返回1,否则,返回0。
(1)写出该算法的基本思想
(2)写出该算法的实现
全部评论 (0)
还没有任何评论哟~
