您的当前位置:首页2011年东北大学软件工程考研真题

2011年东北大学软件工程考研真题

来源:飒榕旅游知识分享网
东北大学2011年攻读硕士学位研究生招生考试试题

答案必须写在答题纸上,否则试卷无效。考试科目名称:计算机基础综合

第一部分C语言程序设计(75分)

一、阅读下列程序,写出运行结果。(共40分,5小题)1、#include

voidmain(){

structnum{

intx;inty;

}a[]={{2,32},{8,16},{4,48}};structnum*p=a+1;intx;

x=p->y/a[0].x*++p->x;printf(\"x=%d\\n\x);}2、#include

#include#include

intsearch(int*a,intn,intx){inti=0;

while(iif(ireturn1;}else{

return-1;}}}

voidmain(void){

inti,a[]={34,67,13,778,443,5,3,2,56};for(i=0;i<5;i++){

if(search(a+i,5,i)>=0){

printf(\"%d\\n\i);}}}

第2页

3、#include#includeintmain(){

union{

chars[2];inti;}a;

a.i=0x1234;

printf(\"%x,%x\\n\a.s[0],a.s[1]);

}

4、

#include#includetypedefstructnode{

intval;

structnode*next;}NODE;

voidinsert(NODE*list,intx){

NODE*u,*v,*p;u=list;v=u->next;

while(v!=NULL&&xval){

u=v;

v=v->next;}

if(v==NULL||x!=v->val){

p=(NODE*)malloc(sizeof(NODE));p->val=x;p->next=v;u->next=p;}

}

第3页

intmain(){

inti,x,a[]={5,45,34,67,5,23,34,8,5,56};NODE*head,*p;

head=(NODE*)malloc(sizeof(NODE));head->next=NULL;

printf(\"Enterintegers:\\n\");for(i=0;i<10;i++){

insert(head,a[i]);}

for(p=head->next;p!=NULL;p=p->next){

printf(\"%d\\p->val);printf(\"\\n\");}

}

5、下面的递归函数,判断数组a[]的前n个元素是否是不递增的。不递增返回1,否则返回0。阅读C程序,写出______处内容。

intdec(inta[],intn){

if(n<=1)return_______;if(a[0]二、C语言编程。

1、试编写一个程序,显示指定的文本文件中的内容,要求每行中显示的字符数不得超过30个字符。

2、试编写1个函数char*stuff(char*str1,char*str2,inti,intj),将串str1中的第i个字符到第j个字符之间的字符串替换成str2。

3、试找出一个二维数组中的鞍点。鞍点指该位置上的元素是该行上的最大值,也是该列上的最小值,二维数组也可能没有鞍点。

第4页

第二部分数据结构

1、对abc按栈方式处理有几种结果,写出每种结果。按列队方式处理有几种结果?写出每种结果。

2、写出表达式(a+b)/c+d/(e+f)+a*(c+f)的二叉树表示。

3、请对如图所示的无向带权图:

(1)写出它的邻接表;

(2)按prim算法求其最小生成树。

4、已知关键字序列:22,12,13,8,9,20,33,42,44,38,24,48,60。画出相对应的平衡二叉树,并画出删除13后的平衡二叉树。

5、如下一组关键字表25,67,18,24,38,64,55,22,15,48,31。进行快速排序,写出第一趟排序过程中每一趟的数据变化情况。

二、编写算法。

1、整数序列作为输入数据,当输入数据为0时表示输入结束。编写算法,将数据按递增顺序用单链表存放,并打印该链表。

2、二叉树采用二叉链表作为存储结构,编写算法,求出二叉树中第i层和第i+1层叶子结点个数之和。

3、编写算法,求以邻接表存储的无向图G的连通分量(要求输出每一连通分量的顶点值)。

第5页

因篇幅问题不能全部显示,请点此查看更多更全内容