西南交通大学考研真题一计算机.docx

上传人:b****7 文档编号:9591431 上传时间:2023-02-05 格式:DOCX 页数:14 大小:38.67KB
下载 相关 举报
西南交通大学考研真题一计算机.docx_第1页
第1页 / 共14页
西南交通大学考研真题一计算机.docx_第2页
第2页 / 共14页
西南交通大学考研真题一计算机.docx_第3页
第3页 / 共14页
西南交通大学考研真题一计算机.docx_第4页
第4页 / 共14页
西南交通大学考研真题一计算机.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

西南交通大学考研真题一计算机.docx

《西南交通大学考研真题一计算机.docx》由会员分享,可在线阅读,更多相关《西南交通大学考研真题一计算机.docx(14页珍藏版)》请在冰豆网上搜索。

西南交通大学考研真题一计算机.docx

西南交通大学考研真题一计算机

西南交通大学2008年硕士研究生入学考试试卷

试题代码:

921

试题名称:

程序设计与数据结构

考生注意:

1.本试题共6大题,共8页,考生请认真检查;

2.请务必将答案写在答卷纸上,写在试卷上的答案无效。

题号

总分

得分

签字

一、填空题(本大题共20个空,每空1分,共20分)

1、设有定义:

intx=1,y=2;则表达式:

2.0+x/y的值为:

2、在C语言中字符串的存放,其最后一个字符称为“空字符”,也叫字符串的结束符,对应的转义字符是,其值为。

3、设有宏定义:

#defineAA2-3,则3*AA的宏替换结果是。

4、设有定义:

inta=3,b=2,c=1,则表达式:

a>b>c的值是。

5、定义一个名为a的二维数组,并对数组元素赋初值,其值为下列矩阵,则对应的定义语句为:

1.03.82.6

3.35.09.8

6、设有定义:

chars[]=”SWJTU”;则数组占用的内存为字节,s[5]的值为。

7、若有定义:

inta[5],*p=a;则*(p+3)表示;*p+3表示。

8、在具有n个元素单元的循环队列中,若采用少用一个元素来解决队空队满时都有头尾指针相等的问题,队满时共有个元素。

9、带一个头结点的单链表head为空的条件是。

10、二维数组A[10][20]采用列序为主序存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][12]的地址是。

11、深度为k的完全二叉树至少有个结点,至多有个结点。

12、在一棵二叉树中,度数为零的结点个数为n0,度数为2的结点个数为n2,则有n0=。

13、在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于。

14、对n个元素的序列进行冒泡排序时,最少的比较次数是。

15、以折半查找方法查找一个线性表时,此线性表必须是存储的表。

二、单项选择题(本大题共30小题,每小题1分,共30分。

在每小题列出的四个选项中只有一个选项是符合题目要求的答案)

1、若有以下定义语句:

char;intb;floatc;doubled:

则表达式a+b*c-d的值的类型是【】。

A.charB.intC.floatD.double

2、以下程序段中与语句k=a>b?

(b>c?

1:

0):

0;功能等价的是【】。

A.if((a>b)&&(b>c))k=1;elsek=0;B.if((a>b)||(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=0;elsek=1;D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

3、若程序中定义了以下函数,并将其放在调用语句之后,则在调用前需对该函数进行说明,以下选项中错误的说明是【】。

doublemyadd(doublea,doubleb)

{return(a+b);}

A.doublemyadd(doublea,b);B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);D.doublemyadd(doublex,doubley)

4、假定a和b均为int型变量,则执行以下程序段后,b的值是【】。

a=1;b=10;

do{b-=a;a++;}while(b--<0);

A.9B.-2C.-1D.8

5、语句:

printf(“%d”,strlen(“abc\n012\1\\”));的输出结果是【】。

A.9B.10C.11D.12

6、设有定义:

intn=0,*P=&n,**q=&p;则以下选项中,正确的赋值语句是【】。

A.p=1;B.*q=2;C.q=pD.*p=5

7、设有变量定义:

inta[10]={1,2,3,4,5,6,7,8,9,10},*P=&a[3],b;则执行赋值语句b=p[5];后b的值是【】

A.5B.6C.8D.9

8、在函数定义中未指定返回值类型,则其隐含的返回值类型是【】。

A.voidB.intC.floatD.编译出错

9、若有函数原型:

viodf(inta[]);和数组定义inta[10];则以下函数调用错误的是【】。

A.f(a)B.f(a+2)C.f(a[0])D.f(&a[0])

10、设k为整型变量,与表达式(!

k)值完全相同的表达式是【】。

A.k==0B.k==1C.k!

=0D.k!

=1

11、以下程序运行后,输出结果是【】。

intb;

voidMyFunc(inta,int*c)

{b=(a++)+(*c)++;}

voidmain(void)

{inta,c;

a=1;b=2;c=3;

MyFunc(c,&a);

printf(“%d%d%d”,a,b,c);

}

A.144B.243C.123D.143

12、以下函数的功能是【】。

intfun(char*s1,char*s2)

{inti=0;

while(s1[i]=s2[i]&&s2[i]!

=’\0’)i++;

return(s1[i]==’\0’&&s2[i]==’\0’);

}

A.将s2所指字符串赋给s1

B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

13、以下程序段是从键盘上依次输入数据给数组元素,程序的下划线处应填上【】。

voidmain(void)

{inta[20],i=0;

while(i<20)scanf(“%d”,);

}

A.&a[i]B.&a[i+1]C.&a[i++]D.&a[i]++

14、若文件型指针fp已指向某文件的末尾,则函数feof(fp)的返回值是【】。

A.0B.-1C.NULLD.非零值

15、在数据结构中,从逻辑上可以把数据结构分成【】。

A.动态结构和静态结构B.紧凑结构和非紧凑结构

C.线性结构和非线性结构D.内部结构和外部结构

16、在以下叙述中,正确的是【】。

A.线性表的顺序存储结构优于链式存储结构

B.二维数组是其数据元素为线性表的线性表

C.栈的操作方式是先进先出

D.队列的操作方式是先进后出

17、一个栈的入栈序列式a,b,c,d,e,则不可能的出栈序列是【】。

A.edcbaB.decbaC.dceabD.abcde

18、若已知一个栈的入栈序列是1,2,3,……,n,其输出序列为p1,p2,p3,……,pn,若p1=n,则p1为【】。

A.iB.n=IC.n-i+1D.不确定

19、循环队列用数组A[m]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是【】。

A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front

20、设串s1=””ABCDEFG,s2=”PQRST”,函数con(x,y)返回x和y串的连接串,subs(s,I,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2)))的结果串是【】。

A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

21、设矩阵A是一个对称矩阵,为了节省存储空间,将其下三角部分按行序存放在一维数组B[n(n-1)/2]中,对下三角部分中任一元素ai,j(i≥j),在一维数组B中下标k的值是【】。

A.i(i-1)/2+j-1B.i(i-1)/2+jC.i(i+1)/2+j-1D.i(i+1)/2+j

22、设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为【】。

A.2hB.2h-1C.2h+1D.h+1

23、在一个具有n个顶点的无向图中,要连通全部顶点至少需要【】条边。

A.nB.n+1C.n-1D.n/2

24、设哈希表长m=14,哈希函数H(key)=key%11.表中已有4个结点:

addr(15)=4,addr(38)=5,addr(61)=6,addr(84)=7,其余地址为空,如用线性探测在散列处理冲突,关键字为49的节点的地址是【】。

A.3B.4C.5D.6

25、哈希表长度为m,哈希函数H(K)=K%P,一般来说P应取小于m的最大【】。

A.奇数B.偶数C.素数D.合数

26、若用邻接矩阵表示一个有向图,则其中每一列包含的1的个数为【】。

A.图中顶点的入度B.图中顶点的出度

C.图中弧的条数D.图中连通分数的数目

27、在对n个关键字进行直接选择排序的过程中,每一趟都要从无序区选出最小关键字元素,则在进行第i趟排序之前,无序区中关键字元素的个数为【】。

A.iB.i+1C.n-iD.n-i+1

28、下列排序算法中,其时间复杂度和记录的初始排列无关的是【】。

A.插入排序B.堆排序C.快速排序D.冒泡排序

29、对20个有序记录进行折半查找,查找成功的平均查找长度为【】。

A.5B.37/10C.39/10D.41/10

30、当初始数据有序时,不应采用【】。

A.堆排序B.快速排序C.基数排序D.希尔排序

三、阅读程序,按提示给出结果(共5小题,每小题4分,共20分)。

1、下面的函数Func的功能是。

floatFunc(floata[],intN)

{inti,floats;

for(i=0,s=0;i

returns/N;

}

2、以下程序运行后的输出结果是。

voidmain(void)

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

}

printf(“%d%d\n”,a,b);

}

3、以下程序运行后的输出结果是。

voidmain(void)

{inti=0,s=0;

for(:

:

{i++;

if(i==3||i==5)continue;

if(i==6)break;

s+=i;

}

printf(“%d\n”,s);

}

4、下面程序运行时,若输入234,则输出结果是。

unsignedFunc(unsignedNum)

{unsignedk=1;

do{k*=Num%10;Num/=10;}while(Num);

returnk;

}

voidmain(void)

{unsignedn;

scanf(“%u”,&n);

printf(“%d”,Func(n));

}

5、下面程序运行时,若输入:

口口-893abc193,则输出结果是。

intIsDigit(charc)

{return(c<’0’||c>’9’)?

0:

1:

}

longFunc(chars[])

{longn;intSign;

for(:

*s==’口’:

s++);//口表示空格

Sign=(*s==’-’)?

-1:

1;

if(*s==’+’||*s==’-’)s++;

for(n=0L:

IsDigit(*s):

s++)n=10*n+(*s-‘0’);

returnn*Sign;

}

voidmain(void)

{chars[81];

gets(s);

printf(“%ld”,Func(s));

}

四、程序填空(本大题共10个空,每空2分,共20分)

1、以下程序从键盘输入数据到数组中,统计其中正数的个数,并计算它们之和。

请填空。

voidmain(void)

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf(“%d”,【1】);

for(i=0;i<20;i++)

{if(a[i]>0)

{count++;

sum+=【2】;

}

}

printf(“Count=%d,Sum=%d”,count,sum);

}

2、以下函数的功能是删除字符串s中的所有数字字符,请填空。

voidDelSpace(char*s)

{intn=0,i;

for(i=0;s[i];i++)

if(【3】)s[n++]=s[i];

s[n]=【4】;

}

3、下面是折半查找算法,请填空。

intSearch_Bin(SSTableST,KeyTypekey)

{low=1;high=ST.length;//置区间初值

while(low<=high)

{mid=【5】;

if(ST.elem[mid].key=key)returnmid;//找到待查元素

elseif(key

【6】;//继续在前半区间进行查找

elselow=【7】;//继续在后半区间进行查找

}

return0;//顺序表中不存在待查元素

}//Search_Bin

4、下面为直接插入排序的算法,请填空。

viodInsertSort(SqList&L){//对顺序表L作直接插入排序。

{for(i=2;i<=L.length;++i)

if(L.r[i].key

【8】;//复制为监视哨

for(j=i-1;L.r[0].key

【9】;//记录后移

【10】;//插入到正确位置

}

}//InsertSort

五、简要回答题(共5小题,每小题4分,共20分)

1、某二叉树的前序遍历节点访问顺序是abdgcefh,中序遍历的节点访问顺序是dgbaechf,则其后序遍历的节点访问顺序是什么?

2、在队列的顺序存储结构中,为什么要采用循环队列的形式?

3、在有向图的邻接矩阵中,如何判断入度或出度为零的顶点?

在有向图邻接表中,又如何判断出度为零的顶点。

4、为什么说线性表的顺序存储结构是一种随机存取结构?

5、请求解下图的最小生成树。

六、程序设计(本大题共4小题,每题10分,共40分)

1、请编写函数voidFunc(int*a,int*n);它的功能是:

求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

注:

假设a所指的数组有足够的空间存储满足条件的数。

2、编一个函数,用递归方法求n阶勒让德多项式的值。

其中:

多项式的值通过函数返回,多项式的阶n以及多项式的变量x通过函数参数传递。

递归公式如下:

3、有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中多余的元素值相同的结点。

4、设一棵二叉树以二叉链表为存储结构,设计一个算法求二叉树的高度。

2008年真题参考答案(注意,此部分不包括程序设计答案,数据结构的详解请参考李春葆版《数据结构习题与解析》)

一、填空题

12.0

2\00

3-3

4true

5doublea[3][2]={1.0,3.8,2.6,3.3,5.0,9.8};

66\0

7a[3]的值a[0]的值加3

8.n-19.head->next==NULL10.200+10*12+6=32611.12.n2+1

13.114.n-115.顺序有序

二、单项选择题

1~14:

DCADADDBCCBDCD15~30:

CBCCADABCACADBBB

三、阅读程序,按提示给出结果

1求平均数

221

35

424

5-893

四、程序填空

1.&a[i]a[i]

2.s[i]>=’0’&&s[i]<=’9’‘\0’

3.(low+high)/2high=mid-1mid+1

4.L.r[0]=L.r[i]L.r[j+1]=L.r[j]L.r[j+1]=L.r[0]

五、简要回答题

1.gdbehfca

2.防止出现队列假溢出

3.1)入度:

该顶点所在行对应的元素全为0

2)出度:

该顶点所在列对应的元素全为0

3)度为零:

顶点的邻接点域为零。

4.顺序存储是以元素在计算机内“物理位置相邻”来表示线性表中数据元素之间的逻辑关系,因此,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取。

5.

六、程序设计

1~2:

3.voiddel(List&L)

{p=L->next;

if(p!

=NULL)

while(p->next!

=NULL)

{if(p->data!

=p->next->data)

p=p->next;

else

{

g=p->next;

p->next=g->next;

free(g);

}

}

}

4.intDepth(BiTree&T)

{

intm,n;

if(!

T)return0;

m=Depth(T->lchild);

n=Depth(T->rchild);

return(m>n?

m:

n)+1;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1