2014 年江西师范大学 C 语言程序设计与数据结构考研真题 B
卷
一、简答题(共 8 小题,其中第 7 小题 8 分,其余每小题 6 分,共 50 分)
1.在 C 语言中,结构化程序设计有哪三种基本控制结构?
2.简述以下 if 语句的执行过程。
if(表达式 1) 语句 1;
else if(表达式 2) 语句 2;
3.简述 C 语言中 break 语句的作用。
4.请给出指针变量定义的一般形式,并举例说明。
5.常用的数据存储结构分为哪几种?
6.对于一个队列,若输入序列为{a,b,d,e,f},试写出其对应的输出序列。
7.假设双链表结构的 C 语言描述如下:
typedef int datatype;
typedef struct dlink_node{
datatype info;
struct dlink_node llink,rlink;
}dnode;
根据图 1 回答以下问题:
(1)如何访问 q 指针所指结点的数据域?
(2)如何访问 q 指针所指结点的直接后继结点的数据域?
head
∧
∧
q
图 1
8、什么叫二叉树?
二、填空题(5 个空,每空 2 分,共 10 分)
1.在 C 语言中,实型变量的类型说明符有:__________、double。
2.若已定义 int a=1,b=2,c=3,则表达式 a||b&&c 的值为_________。
3.若有 5<=x<=10,则其正确的 C 语言表达式是_________。
4.执行下面程序段后,a 的值为_________。
int a=4,b=6;
a=a+b;
5.下面程序运行后,输出的结果是___________。
#include
void main()
{ int x=10,y=3;
printf(“%d\n”,y=x%y);
}
三、判断题,对打“√”,错打“X”(5 小题,每小题 2 分,共 10 分)
1、栈的存储方式既可以是顺序存储,也可以是链式存储。
2、队列是一种特殊的线性表,具有先进先出的性质。
3、如果一个串中的所有字符均在另一个串中出现,则前者是后者的子串。
4、使用二分法检索时要求线性表有序并且采用顺序存储结构。
5、线性表若采用链式存储结构时,要求内存中可用存储单元的地址必须是连续的。
四、应用题(3 小题,每小题 10 分,共 30 分)
1、对于图 2 所示的二叉树,请回答以下问题:
B
C
A
D
图 2
E
F
G
(1) 二叉树的高度(深度)为多少?
(2) 该二叉树是否是满二叉树?是否是完全二叉树?
(3) 写出这棵二叉树的前序遍历序列。
2、假设用于通信的电文由 6 个字母 A,B,C,D,E 和 F 组成,各字母在电文中出现的相对频率
分别为 0.3,0.07,0.1,0.18,0.2 和 0.06,请根据字符出现频率构造对应的 Huffman 树,
并为它们设计 Huffman 编码。
3、对于图 3 所示的无向图 G,试给出:
A
C
E
图 3
D
B
(1) 该无向图从顶点 A 开始的深度优先(DFS)遍历结果。
(2) 该无向图从顶点 A 开始的广度优先(BFS)遍历结果。
五、程序设计题(5 小题,每小题 10 分,共 50 分)
1、有一函数:y=
x
2
x
3
x
3
x
x
x
3
10
10
试编写一个 C 语言程序,从键盘上输入 x 的值,根据上面的函数,求出 y 的值,并输出。
2、假如某数列第 1,2 项分别为 0 和 1,以后每个奇数编号的项是前两项之和,偶数编号的
项是前两项之积,生成并打印该数列的前 15 项,生成的 15 个数存放在一维数组 x 中,并按
每行 5 项的形式输出。
3、试编写一个 C 语言程序,先从键盘为一个整型二维数组 a[10][10] 赋值,然后计算并输
出 a 数组中各元素的最大值。
4、试编写一个算法 int count_x(sequence_list sl, int x),计算并返回顺序表中值为 x
的结点的个数。
假定程序中已有用 C 语言描述的顺序表结构如下:
#define MAXSIZE 100
/*预定义最大的数据域空间*/
typedef int datatype;
/*假设数据类型为整型*/
typedef struct{
datatype a[MAXSIZE];
/*此处假设数据元素只包含一个整型的关键字域*/
int size;
/*线性表长度*/
}sequence_list;
/*预定义的顺序表类型*/
5、试编写一个算法 node *insert(node *headA, node *headB),实现把带头结点的 headB
单链表中值为偶数的所有结点依次插入到带头结点的 headA 单链表尾部。假定程序中已有如
下说明:
typedef int datatype;
typedef struct link_node{
datatype info;
struct link_node *next;
}node;