武汉科技大学考研真题C语言程序设计与参考答案.docx

上传人:b****5 文档编号:5244235 上传时间:2022-12-14 格式:DOCX 页数:31 大小:82.63KB
下载 相关 举报
武汉科技大学考研真题C语言程序设计与参考答案.docx_第1页
第1页 / 共31页
武汉科技大学考研真题C语言程序设计与参考答案.docx_第2页
第2页 / 共31页
武汉科技大学考研真题C语言程序设计与参考答案.docx_第3页
第3页 / 共31页
武汉科技大学考研真题C语言程序设计与参考答案.docx_第4页
第4页 / 共31页
武汉科技大学考研真题C语言程序设计与参考答案.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

武汉科技大学考研真题C语言程序设计与参考答案.docx

《武汉科技大学考研真题C语言程序设计与参考答案.docx》由会员分享,可在线阅读,更多相关《武汉科技大学考研真题C语言程序设计与参考答案.docx(31页珍藏版)》请在冰豆网上搜索。

武汉科技大学考研真题C语言程序设计与参考答案.docx

武汉科技大学考研真题C语言程序设计与参考答案

姓名:

       报考学科、专业:

           准考证号码:

          

密封线内不要写题

二O一二年招收硕士研究生入学考试试题

考试科目及代码:

 C语言程序设计(855)    

适用专业:

 软件工程,计算机技术       

答题内容写在答题纸上,写在试卷或草稿纸上一律无效考完后试题随答题纸交回。

考试时间3小时,总分值150分。

一、选择题(每题2分,共20分)

1、C语言用()表示逻辑“真”。

A)trueB)整数值C)非零整数值D)T

2、()是合法的用户自定义标识符。

A)πB)2abC)_varD)int

3、下列语句应将小写字母转换为大写字母,其中正确的是()。

A)if(ch>=’a’&ch<=’z’)ch=ch-32;B)if(ch>=’a’&&ch<=’z’)ch=ch-32;

C)ch=(ch>=’a’&&ch<=’z’)?

ch-32:

’’;D)ch=(ch>’a’&&ch<’z’)?

ch-32:

ch;

4、以下能对二维数组a进行正确初始化的语句是()。

A)inta[2][]={{0,1,2},{3,4,5}};B)inta[][3]={{0,1,2},{3,4,5}};

C)inta[2][4]={{0,1,2},{3,4},{5}};D)inta[][3]={{0,,2},{},{3,4,5}};

5、能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()。

A)return这二个数B)形参用数组C)形参用二个指针D)用二个全局变量

6、数组a的定义语句为“floata[3][4];”,下列()是对数组元素不正确的引用方法。

A)a[i][j]B)*(a[i]+j)C)*(*(a+i)+j)D)*(a+i*4+j)

7、下列函数的功能是()。

voidabc(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}

A)交换*p1和*p2的值。

B)交换*p1和*p2的地址。

C)正确,但无法改变*p1和*p2的值。

D)可能造成系统故障。

8、递归函数中的形参是()。

A)自动变量B)外部变量C)静态变量D)可根据需要自定义存储类型

9、有以下定义:

inta[10];charb[80];函数声明为:

voidsss(char[],int[]);则正确的函数调用形式是()。

A)sss(a,b);B)sss(charb[],inta[]);C)sss(b[],a[]);D)sss(b,a);

10、若有定义:

chara;intb;floatc;doubled;则表达式“a+b*c-d”的类型为()。

A)intB)charC)floatD)double

二、读程序写结果(每题5分,共20分)

1.#include

voidmain()

{intx=46278;

do{printf("%d*",x%10);x/=10;}while(x);}

2.#include

voidfun2()voidmain(void)

{staticinta=1;{inti;

a++;for(i=0;i<4;i++)fun2();

printf(“%d”,a);}}

3.#include

voidmain(void)

{inti,j=0;

for(i=1;i<=4;i++)switch(i%3){case0:

j++;

case1:

j++;

case2:

j++;}

printf("j=%d",j);

}

4.#include

intmodify(inta[]);

voidmain()intmodify(inta[])

{inti,a[]={1,2,3,4,5};{inti;

a[2]=modify(a);for(i=0;i<5;i++)a[i]=2*a[i];

for(i=0;i<=4;i++)printf("%5d",a[i]);return0;

}}

三、程序填空题(每空3分,共60分)

[程序填空题1]函数intfind_Max_Min(inta[],intn)的功能是:

找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。

查找方法如下:

先将较大的数移到数组的后半区,较小的数移到数组的前半区,然后在前半区找出最小元素,在后半区找出最大元素。

intfind_Max_Min(inta[],intn)

{inti,Count=0,temp,Maxnum,Minnum;

for(i=0;i

{Count=Count+1;/*元素比较次数计数*/

if(___

(1)___){temp=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

Maxnum=a[n-1];Minnum=a[0];

for(i=1;i

{Count=____

(2)____;Minnum=_____(3)_____?

a[i]:

Minnum;

 Maxnum=_____(4)_____?

_______(5)_____:

Maxnum;}

printf(“Max=%d\nMin=%d\n”,Maxnum,Minnum);

returnCount;

}

[程序填空题2]某单位准备对指定的n名(n<80)候选人进行一次投票。

选举前事先印制了选票,投票者只需将选中者名下的圆圈涂黑即可。

规定每张选票上被涂黑的圆圈数不得超过3个,也不得少于1个,否则视为无效选票。

投票结束后,所有选票经计算机扫描处理,形成了描述选票状态的文本文件。

例如,n=8时所形成的文件格式如右所示。

其中,每行表示一张选票的数据,每列代表一位候选者的得票情况。

第i行第j列为1,表示第i张选票上投了第j名候选人1票。

函数statistic()的功能是从文件中读入选票数据,并统计每位候选者的得票数并存入candidate[],函数返回有效选票数。

intstatistic(FILE*fp,intcandidate[],intn)

{ charstr[80];  inti,tag=0,q=0;

for(i=0;i

while(____

(1)____)

01011000

10010100

10011000

11111111

00000000

00111000

{ fgets(str,80,fp);/*读入一张选票数据*/

  for(tag=0,i=0;____

(2)____;i++)  if(str[i]=='1')tag++;

  if(____(3)____)/*若是有效选票,则进行统计*/

{  ____(4)____;

    for(i=0;i

}

returnq;

}

[程序填空题3]函数DelA_insB(LinkedListLa,LinkedListLb,intkey1,intkey2,intlen)的功能是:

将线性表La中关键码为key1的结点开始的len个结点,按原顺序移至线性表Lb中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。

线性表的存储结构为带头结点的单链表。

typedifstructnode{intkey;structnode*next;}*LinkedList;

intDelA_InsB(LinkedListLa,LinkedListLb,intkey1,intkey2,intlen)

{LinkedListp,q,s,prep,pres;intk;

if(!

La->next||!

Lb->next||len<=0)return–1;

p=La->next;prep=La;/*查找表A中键值为key1的结点*/

while(p&&p->key!

=key1){prep=p;p=p->next;}

if(!

p)return–1;/*表A中不存在键值为key1的结点*/

q=p;k=1;

while(q&&__

(1)__){

(2)_;k++;}/*在表A中找出待删除的len个结点*/

if(!

q)return–1;/*表A中不存在要被删除的len个结点*/

s=Lb->next;__(3)___;/*查找表B中键值为key2的结点*/

while(s&&s->key!

=key2){pres=s;s=s->next;}

if(!

s)return–1;/*表B中不存在键值为key2的结点*/

__(4)__=q->next;q->next=_(5)__;pres->next=p;

return0;

}

[程序填空题4]一棵非空二叉树中“最左下”结点定义为:

若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。

例如,下图所示的以A为根的二叉树的“最左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。

函数BSTreeFind_Del(BSTreeT)的功能是:

若T指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从树下删除以*p为根的子树,函树返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。

TypedefstructBSTNode{

intdata;

structBSTNode*left,*right;}*BSTree;//left,right为结点的左、右孩子指针

BSTreeFind_Del(BSTreeT)

{BSTreep,pre;

if(!

T)returnNULL;/*T指向的二叉树为空树*/

__

(1)__;if(!

p)returnNULL;

__

(2)____;

while(p){pre=p;p=__(3)___;}

if(__(4)__==T)pre->right=NULL;/*T的右子树根为“最左下”结点*/

else__(5)__=NULL;/*删除以“最左下”结点为根的子树*/

returnp;

}

四、程序设计题(共50分)

[程序设计题1(8分)]请设计递归函数voidreverse(char*s,intlen),其功能为逆置长度为len的字符串。

例如,若串s的内容为“abcd”,则逆置后其内容变为“dcba”。

[程序设计题2(12分)]编写程序:

从键盘输入年份year(≥1900),计算该年中有几个“黑色星期五”(既是13日又是星期五的日期)。

(提示:

1900年1月1日星期一)

[程序设计题3(15分)]设计程序实现功能:

(1)从键盘输入若干整数(可以相同,以0表示结束),将它们建成一个带头结点的非递减有序的单链表。

(2)删除上述链表中的重复元素,使得链表中的元素互不相同。

[程序设计题4(15分)]假设以二维数组G[m][n](m,n均小于20)表示一幅图像各像素的颜色,则G[i][j]表示区域中点(i,j)处的颜色,颜色值为0到k的整数。

设计函数voidChangeColor(intG[][20],intm,intn,inti0,intj0,intNewColor),该函数的功能是:

将指定点(i0,j0)所在的同色邻接区域(所有与点(i0,j0)同色的上、下、左、右可连通的点组成同色邻接区域)的颜色置换为给定的颜色值NewColor。

例如,一幅8×9像素的图像如左图所示。

设用户指定点(2,4),颜色值为0,其同色邻接区域如左图的阴影部分所示。

将上述同色区域的颜色替换为颜色值7所得的新图像如右图所示。

参考答案

一、选择题(每题2分,共20分)

1.C2.C3.B4.B5.A6.D7.A8.A9.D10.D

二、读程序写结果(每题5分,共20分)

1.8*7*2*6*4*2.23453.j=84.240810

三、程序填空题(每空3分,共60分)

[程序填空题1]

(1)a[i]>a[n-1-i]

(2)Count+2(3)a[i]

(4)a[n-1-i]>Maxnum(5)a[n-1-i]

[程序填空题2]

(1)!

feof(fp)

(2)i=1&&tag<=3

(4)q++(5)candidate[i]++

[程序填空题3]

(1)k

(2)q=q->next(3)pres=Lb

(4)prep->next(5)s

[程序填空题4]

(1)p=T->right

(2)pre=T(3)p->left

(4)pre(5)pre->left

四、程序设计题(共50分)

[程序设计题1(8分)]

voidreverse(char*s,intlen)

{charch;

if(len<=1)return;

ch=*s;*s=*(s+len-1);*(s+len-1)=ch;

reverse(s+1,len-2);

}

[程序设计题2(12分)]

#include

intleap(inty)

{if(y%4==0&&y%100!

=0||y%400==0)return1;elsereturn0;

}

intf1(inty)

{ints=0,i;

for(i=1900;i

returns;

}

intday(inty,intm)

{if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)return31;

elseif(m==4||m==6||m==9||m==11)return30;

elseif(leap(y))return29;

elsereturn28;

}

voidmain()

{intyear,i,d,c=0;

scanf("%d",&year);

d=f1(year);//计算year年1-13与1900年1-1相差的天数

d=d+12;

for(i=1;i<=12;i++)

{if((d+1)%7==5)c++;

d=d+day(year,i);

}

printf("%d\n",c);

}

[程序设计题3(15分)]

#include

#include

structnode{intdata;structnode*next;};

voidInsertList(structnode*head,intx)

{structnode*p,*q,*pre;

p=(structnode*)malloc(sizeof(structnode));

p->data=x;

pre=head;q=head->next;

while(q&&q->datanext;}

p->next=pre->next;pre->next=p;

}

voidCreatList(structnode*head)

{intn;

scanf("%d",&n);

while(n){InsertList(head,n);scanf("%d",&n);}

}

voidDelList(structnode*head)

{structnode*p,*q;

p=head->next;

while(p&&p->next)

{if(p->data==p->next->data){q=p->next;p->next=q->next;free(q);}

elsep=p->next;

}

}

voidPrintList(structnode*head)

{structnode*p=head->next;

while(p){printf("%5d",p->data);p=p->next;}

printf("\n");

}

voidmain()

{structnode*head;

head=(structnode*)malloc(sizeof(structnode));

head->next=NULL;

CreatList(head);PrintList(head);

DelList(head);PrintList(head);

}

[程序设计题4(15分)]

voidChangeColor(intG[][20],intm,intn,inti0,intj0,intNewColor)

{

inttop=0,tx,ty,oldcolor=G[i0][j0];

structpoint{intx,y;}stack[400],temp;

if(G[i0][j0]==NewColor)return;

temp.x=i0;

temp.y=j0;

stack[0]=temp;

top++;

while(top)

{

top--;

tx=stack[top].x;ty=stack[top].y;

G[tx][ty]=NewColor;

if(tx-1>=0&&G[tx-1][ty]==oldcolor)

{temp.x=tx-1;temp.y=ty;stack[top]=temp;top++;}

if(tx+1

{temp.x=tx+1;temp.y=ty;stack[top]=temp;top++;}

if(ty-1>=0&&G[tx][ty-1]==oldcolor)

{temp.x=tx;temp.y=ty-1;stack[top]=temp;top++;}

if(ty+1

{temp.x=tx-1;temp.y=ty;stack[top]=temp;top++;}

}

}

 

姓名:

       报考专业:

           准考证号码:

               

密封线内不要写题

二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=

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

当前位置:首页 > 总结汇报 > 学习总结

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

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