武汉科技大学考研历年初试真题之C语言程序设计有答案年考研真题.docx
《武汉科技大学考研历年初试真题之C语言程序设计有答案年考研真题.docx》由会员分享,可在线阅读,更多相关《武汉科技大学考研历年初试真题之C语言程序设计有答案年考研真题.docx(30页珍藏版)》请在冰豆网上搜索。
![武汉科技大学考研历年初试真题之C语言程序设计有答案年考研真题.docx](https://file1.bdocx.com/fileroot1/2022-10/25/85f0e7ca-d4cd-4bdb-ba29-de7855487468/85f0e7ca-d4cd-4bdb-ba29-de78554874681.gif)
武汉科技大学考研历年初试真题之C语言程序设计有答案年考研真题
姓名:
报考专业:
准考证号码:
密封线内不要写题
二O一三年招收硕士研究生入学考试试题
考试科目代码及科目名称:
855C语言程序设计
答题内容写在答题纸上,写在试卷或草稿纸上一律无效考完后试题随答题纸交回。
考试时间3小时,总分值150分。
一、选择题(每题2分,共20分)
1.C语言结构类型变量在程序执行期间()。
A)所有成员一起驻留在内存中。
B)只有一个成员驻留在内存中。
C)部分成员驻留在内存中。
D)没有成员驻留在内存中。
2.数组定义为“inta[4][5];”,下列哪一个引用是错误的()。
A)*aB)*(*(a+2)+3)C)&a[2][3]D)++a
3.结构变量stu,类型为STU,含有域major,下面哪条语句正确引用了major?
()
A)stu.majorB)stu->majorC)STU->majorD)STU.major
4.设函数fun和实参数组的说明形式为:
voidfun(charch,floatx[]);floata[10];
以下对函数的调用语句中,正确的是()。
A)fun("abc",a[]);B)t=fun('D',a);
C)fun('65',2.8);D)fun(32,a[10]);
5.下列语句中与语句while
(1){if(i>=100)break;s+=i;i++;}功能相同的是()。
A)for(;i<100;i++)s=s+i;B)for(;i<100;i++;s=s+i);
C)for(;i<=100;i++)s+=i;D)for(;i>=100;i++;s=s+i);
6.C语言中函数返回值的类型是由()决定的。
A)return语句中的表达式类型B)调用该函数的主调函数类型
C)定义函数时所指定的函数类型D)调用函数时临时
7.以下对枚举类型名的定义中正确的是()。
A)enuma={one,two,three};B)enuma{a1,a2,a3};
C)enuma={‘1’,’2’,’3’};D)enuma{“one”,”two”,”three”};
8.对于以下递归函数f,调用f(4),其返回值为()
intf(intn){if(n)returnf(n-1)+n;elsereturnn;}
A)10B)4C)0D)以上均不是
9.设整型变量i,j值均为3,执行了j=i++,j++,++i后,i,j的值是()。
A)3,3B)5,4C)4,5D)6,6
10.while(!
x)中的表达式(!
x)等价于()。
A)x!
=1B)x!
=0C)x==1D)x==0
二、阅读程序写出程序运行结果(每题5分,共20分)
1.
voidmain()
{intk=0;charc='A';
do{
switch(c++){
case'A':
k++;break;
case'B':
k--;
case'C':
k+=2;break;
case'D':
k=k%2;break;
case'E':
k=k*10;break;
default:
k=k/3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
}
2.
voidmain(void)
{inti=0;
do{printf(“Yes!
”);}while(++i<4);
printf(“\n”);
while(i++<8)printf(“No!
”);
}
3.
#include
voidmain()
{intarr[]={3,6,9,12,15},*p,k;
for(k=0;k<5;k++)arr[k]+=arr[k]/3;
for(p=arr,k=0;k<5;k++)printf("%3d",*(p+k));
}
4.运行时输入:
82
intccc(intn,intr)
{if(r>n)return0;
if(r==0||n==0||n==1)return1;
returnccc(n-1,r)+ccc(n-1,r-1);
}
voidmain()
{intresult=0,n,r;
do{scanf("%d%d",&n,&r);}while(nresult=ccc(n,r);
printf("ccc(%d,%d)=%d\n",n,r,result);
}
三、程序填空(每空3分,共60分)
1.以下函数的功能是将字符串sa中的内容逆置过来,即:
若原串为”abcde”,逆置后应为”edcba”。
#include
voidstrinvert(char*sa)
{
inti=0,j,t;
j=
(1);
while(
(2))
{t=sa[i];sa[i]=sa[j];sa[j]=t;
i++;
(3);
}
}
2.下列程序A与B功能等价,请填空。
程序A:
intf(intn){if(n<=1)returnn;elsereturnf(n-1)+f(n-2);}
程序B:
intf(intn)
{intt0=0,t1=1,t=n;
while((4))
{t=(5);t0=t1;t1=t;n--;}
return(6);
}
3.下面程序的功能是用公式π/4≈(直至最后一项的值小于10-4为止)求π的值。
#include
main()
{intsign=1,i=1;
floatnext=1.0,pi,sum=0;
while((7))
{sum=(8);(9);i+=2;next=1.0/i;}
(10);
printf("pi=%f\n",pi);
}
4.已知带头结点的单链表L,其节点中的元素以递减方式排列。
函数DelList的功能是在L中查找所有大于minK且小于maxK的结点,若找到,则删除结点。
若L中不存在满足条件的结点,则返回-1,否则返回删除的节点数。
链表结点类型定义如下:
typedefstructNode{intdata;structNode*next;}NODE,*LinkList;
intDelList(LinkListL,intminK,intmaxK)
{
___(11)___*q=L,*p=___(12)___;
intTag=0;
while(p)
if(p->data>=maxK){q=p;___(13)___;}
elseif(___(14)___)
{q->next=___(15)___;free(p);
p=___(16)___;___(17)___;}
else___(18)___;
if(___(19)___)return-1;
___(20)___;
}
四、程序设计(4小题,共50分)
1.(10分)函数digit(n,k)的功能是求正整数n中从右端开始的第k(≥1)个数字的值(k从1开始),如果k超过了n的位数,则函数返回-1;否则返回n中第k个数字。
例如:
digit(264539,3)=5digit(7622,5)=-1
要求分别用递归和非递归设计该函数。
2.(10分)编程统计输入的一行中的大写字母、小写字母、数字的个数以及单词数(单词间以空格隔开)。
3.(15分)建立一个学生登记表(人数<100),每个学生包含下列信息:
学号(no)、姓名(name)、性别(sex)、分数(score),其结构定义如下:
structstudent{longno;charname[8];charsex;floatscore;};
要求:
(1)定义学生信息录入函数input,当输入学号为-1表示学生信息录入结束。
函数返回录入信息的学生人数,其函数原型定义如下:
intinput(structstudent*stu);
(2)定义sort函数,实现按照学生姓名升序排序的功能。
(3)使用二分查找算法,定义search函数,实现根据给定学生的姓名,查找并显示出该学生的信息,如果不存在,请给出提示信息。
4.(15分)函数BitTreeDel_RightBottom(BitTreeT)的功能是:
若T指向一棵二叉树的根结点,则找出该结点的右子树上的“最右下”结点*p,并从树中删除以*p为根的子树,函树返回被删除子树的根结点指针;若该树根的右子树上不存在“最右下”结点,则返回空指针。
一棵非空二叉树中“最右下”结点定义为:
若树根的右子树为空,则树根为“最右下”结点;否则,从树根的右子树树根出发,沿结点的右孩子分支向下查找,直到某个结点不存在右孩子时为止,该结点即为此二叉树的“最右下”结点。
TypedefstructBitNode{
intdata;
structBitNode*left,*right;
}*BitTree;//left,right为结点的左、右孩子指针
参考答案(A)
一、选择题(每题2分,共20分)
1.A2.D3.A4.B5.A6.C7.C8.A9.B10.D
二、读程序写结果(每题5分,共20分)
1.k=8
2.Yes!
Yes!
Yes!
Yes!
No!
No!
No!
No!
3.481216204.ccc(8,2)=28
三、程序填空题(每空3分,共60分)
1.
(1)strlen(sa)-1
(2)i2.(4)n>1(5)t0+t1(6)t1
3.(7)next(8)sum+sign*next(9)sign=-sign(10)pi=sum*4
4.(11)LinkList(12)L->next(13)p=p->next(14)p->data>minK
(15)p->next(16)q->next;(17)tag++;(18)break
(19)Tag==0(20)returnTag
四、程序设计题(共50分)
1.
intdigit(intn,intk)
{if(n==0)return-1;
elseif(k==1)returnn%10;
elsereturndigit(n/10,k-1);}
intdigit(intn,intk)
{while(n)
{if(k==1)returnn%10;
k--;n=n/10;}
return-1;
}
2.
#include
voidmain()
{
inti,num1=0