2013 年江西师范大学 C 语言程序设计与数据结构考研真题 B
卷
一、简答题(共 8 小题,其中第 8 小题 8 分,其余每小题 6 分,共 50 分)
1、简述 C 语言中有哪些关系运算符。
2、C 语言中,输入操作有哪些常用函数?
3、简述以下 if 语句的执行过程。
if(表达式 1) 语句 1;
else if(表达式 2) 语句 2;
else 语句 3;
4、简述在 C 语言的循环语言中 break 语句与 continue 语句的区别。
5、抽象数据类型队列的常用操作有哪些(至少写出三个)?
6、二叉树的常见遍历方法有哪些?
7、什么叫函数的递归调用?
8、试分别列举出一个满二叉树和一个完全二叉树的例子。
a[50]; 则数组 a 的元素个数为_________。
二、填空题(5 个空,每空 2 分,共 10 分)
1、C 语言程序的三种基本结构是顺序结构、选择结构和_________结构。
2、若已定义 int x=4,y=2,z=3,则表达式 x-y || z 的值为_________。
3、设有语句 int
4、若有说明和语句:int a=5,b=6,y=6;b-=a;y=a++;则 b 和 y 的值分别是________、
________。
三、判断题,对打“√”,错打“X”(5 小题,每小题 2 分,共 10 分)
1、线性表中除了第一个节点和最后一个节点外,其余的结点有且仅有一个前驱结点和一个
后继结点。
2、两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈
底分别设在这片内存空间的两端。
3、队列是一种特殊的线性表,其特殊性在于插入和删除操作都在表的同一端执行。
4、二叉树中任一个结点的度均为 2。
5、哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根节点较近。
四、应用题(3 小题,每小题 10 分,共 30 分)
1、试分别画出具有 3 个结点的二叉树的五种不同形态。
2、假设通讯电文中只用到了 A,B,C,D,E,F 6 个字母,他们在电文中出现的相对频率分别为
4,18,13,8, 20 和 9,请根据字符出现频率构造对应的 Huffman 树,并为它们设计 Huffman
编码。
3、已知无向图 G=(V, E),其中 V 表示顶点集合,E 表示边集合,且 V={a, b, c, d, e}, E={
, , , , , },请画出无向图 G,并写出该无向图从顶
点 a 开始的深度优先(DFS)遍历结果。
五、程序设计题(5 小题,每小题 10 分,共 50 分)
1、从键盘输入一个字符串(字符中不包含空格),当输入回车时认为输入结束,假设输入的
字符串存放在一个字符数组中,试编写一个 C 语言程序统计输入字符串中小写英文字母、大
写英文字母、数字字符、其他字符的个数。
2、有一对兔子,从出生后第 3 个月起每月生一对兔子,小兔子长到第三个月后每月又生一
对兔子,假如兔子都不死,试编写一个 C 语言程序求一年中可以繁殖成多少对兔子?提示:
兔子的规律为数列 1,1,2,3,5,8,13,...。
3、试编写一个 C 函数 int isprime (int x),判断整数 x 是否是素数,如果是素数,函数
返回 1,否则,返回 0。所谓素数,是指除了 1 和本身之外,不能被其他任何整数整除的数。
4、试编写一个算法 node *lkinsert(node* head, datatype x,datatype a),实现在带头
结点的 head 单链表中值为 a 的结点之后插入新元素 x。假定程序中已有说明如下:
tpedef int dataType;
typedef struct link_node
{
dataType data;
struct link_node next;
} node;
5、试编写一算法 void sort (table *L),实现将顺序表 L 中的记录按排序码从小到大进行
排序(排序算法不限)。假定程序中已有说明如下:
#define MAXSIZE 100 /*顺序表中记录个数的最大值*/
typedef int keytype;
typedef struct{
/*定义排序码类型为整数类型*/
keytype key;
int other;
}recordtype;
typedef struct{
/*记录中除排序码外的其他域*/
/*记录类型的定义*/
recordtype r[MAXSIZE+1];
int length;
}table;
/*待排序顺序表中记录的个数*/
/*待排序顺序表类型*/