武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx

上传人:b****5 文档编号:18918221 上传时间:2023-01-02 格式:DOCX 页数:11 大小:18.78KB
下载 相关 举报
武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx_第1页
第1页 / 共11页
武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx_第2页
第2页 / 共11页
武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx_第3页
第3页 / 共11页
武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx_第4页
第4页 / 共11页
武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx

《武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx》由会员分享,可在线阅读,更多相关《武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

武汉科技大学855C语言程序设计考研真题B卷Word文件下载.docx

b=a-b;

a=a-b;

5.若有定义:

inta=1,b=2;

floatx=3,w;

则合法的switch语句是( 

A.

switch(a)

case1:

w=a/b;

break;

case2:

w=a%b;

}

B.

switch(b)

z=a%b;

case2:

z=a/b;

}

C.

switch(x)

break;

case1:

D.

switch(a+b);

case3:

6.对下述程序段的描述正确的是( 

scanf("

%d,%d"

&

a,&

b);

if(a>

b)a=b;

elsea++;

b++;

printf("

a=%d,b=%d"

a,b);

A.若输入4,5则输出a=5,b=6

B.若输入5,4则输出a=4,b=5

C.若输入5,4则输出a=5,b=5

D.有语法错误,不能通过编译 

7.以下正确的描述是( 

A.从多层循环嵌套中退出时,只能使用break语句

B.在循环体内使用continue和break语句,作用相同

C.只能在循环体内和switch体内使用break语句 

D.continue语句的作用是结束整个循环的执行

8.如果有定义:

intx=0,s=0;

则下面程序段的执行结果是( 

while(!

x!

=0)s+=x++;

printf(“%d”,s);

A.1

B.0 

C.无限循环

D.控制表达式非法,无法编译

9.下面各语句中,能正确进行字符串操作的语句是( 

A.chara[10]={'

A'

'

B'

C'

D'

\0'

};

B.chara[10];

a="

ABCDE"

;

C.char*p;

*p="

D.char*s;

scanf(“%s”,s);

10.以下能对数组value进行正确初始化的语句是( 

A.intvalue[2][]={{1,1},{2,2}};

B.intvalue[][3]={{1,,3},{4,5,6}};

C.intvalue[2][3]={1,2,3,4,5,6};

D.intvalue[][3]={{1},{4,6,}};

11.函数fun和实参数组的声明形式为:

voidfun(charch,floatx[]);

floata[5];

以下对函数的调用语句中,正确的是( 

A.fun("

a"

a[]);

B.t=fun('

a);

C.fun('

65'

2.8);

D.fun(32,a[5]);

12.设有定义inta[3][3];

和函数调用语句sort(a,3);

则正确的函数声明是( 

A.voidsort(inta,n);

B.voidsort(inta[][],intn);

C.voidsort(inta[][3],intn);

D.voidsort(inta[][3],n);

13.有函数定义:

intfunc(int*p),x和y是int型变量,则( 

)是正确的调用。

A.y=func(x);

B.func(x);

C.func()=x;

D.y=func(&

x);

14.已知书籍结构定义如下,则对结构变量bk的正确赋值是( 

structBOOK{struct{ 

intyear,month,day;

}publish;

}bk;

A.bk.year=1998;

bk.month=11;

bk.day=11;

B.publish.year=1998;

publish.month=11;

publish.day=11;

C.year=1998;

month=11;

day=11;

D.bk.publish.year=1998;

bk.publish.month=11;

bk.publish.day=11;

15.对于以下定义,能打印出字母h的语句是( 

structperson{ 

chartitle[20];

intcode;

};

structpersonbook[5]={"

Physics"

17,"

Math"

18,"

English"

20,"

History"

18};

A.printf("

%c"

book[0].title[1]);

B.printf("

book[1].title[4]);

C.printf("

book[2].title[7]);

D.printf("

book[3].title[6]);

二、判断题(总题数:

10,分数:

20.00)

16.C语言规定,在一个源程序中,main函数的位置必须在最开始。

A.正确

B.错误 

17.表达式s1==s2可以用来判断字符串s1与字符串s2是否相等。

18.C语言中一个变量只能定义一次。

19.C语言本身没有输入输出语句。

A.正确 

B.错误

20.函数调用时,函数名必须与所调用的函数名字完全一致。

21.对结构变量s中成员age的引用可以采用表达式s.age。

22.在C语言中,形参是虚拟的,不占存储单元。

23.全局变量和静态变量的初值是在编译时指定的。

24.语句fp=fopen("

a:

\aa.dat"

"

ab"

);

中变量fp的正确定义为:

FILE*fp。

25.若有定义:

inta[4][5];

则表达式a+3表示a数组第3行的首地址。

三、编程题(总题数:

4,分数:

26.voidmain()//输入:

abcAxyz回车

{charch=0;

while((ch=getchar())!

='

\n'

{if(ch>

a'

&

ch'

Z'

)ch-=26;

%c\n"

ch);

}(分数:

5.00)

__________________________________________________________________________________________

正确答案:

CDEAZAB

27.voidmain()

{char*name[4]={"

Tom"

Mike"

John"

Wang"

},*p=name[0];

inti;

for(i=0;

i<

4;

p=name[++i])printf("

*p);

TMJW

28.intfun(intarr[],intm,intn)

{inti,j,s=0;

i<m;

i=i+m-1)

for(j=0;

j<n;

j++)s+=arr[i*n+j];

i<n;

j=j+n-1)

for(i=1;

i<m-1;

i++)s+=arr[i*n+j];

returns;

voidmain(void)

{intt,a[3][4]={5,3,6,8,-2,-4,-7,9,1,0,7,2};

t=fun(a[0],3,4);

t=%d\n"

t);

t=32

29.voidmove(int*arr,intn,intm)

{int*p,array_end=*(arr+n-1);

if(m<

=0)return;

for(p=arr+n-1;

p>

arr;

p--)*p=*(p-1);

*arr=array_end;

m--;

move(arr,n,m);

voidmain()

{inti,number[10]={1,3,5,7,9,2,4,6,8,10};

move(number,10,8);

10;

i++)printf("

%d"

number[i]);

57924681013

四、程序填空题(总题数:

3,分数:

30.以下程序为输出所有的水仙花数(3位数中各位上数字的立方和等于三位数自身)。

voidmain(void)

{inti,s,n,t;

for(i=100;

i<

1000;

i++)

{s=____①____;

n=i;

while(____②____){t=n%10;

s=s-____③____;

____④____;

if(____⑤____)printf(″%d″,i);

10.00)

填空项1:

__________________ 

(正确答案:

①I

②n

③t*t*t

④n=n/10

⑤i==0

31.下面排序算法的思想是:

第一趟比较将最小的元素放在r[0]中,最大的元素放在r[n-1]中,第二趟比较将次小的放在r[1]中,将次大的放在r[n-2]中,…,依次下去,直到待排序列为递增序。

voidsort(intr[],intn)

{inti=0,j,t,min,max;

while(____①____)

{min=max=i;

for(j=i+1;

____②____;

++j)

{if(____③____)min=j;

elseif(r[j]>

r[max])max=j;

if(____④____ 

){t=r[min];

r[min]=r[i];

r[i]=t;

if(max!

=n-i-1)

{if(____⑤____){t=r[min];

r[min]=r[n-i-1];

r[n-i-1]=t;

else{t=r[max];

r[max]=r[n-i-1];

i++;

}//sort(分数:

①i<n-i-1

②j<n-i

③r[j]<r[min]

④min!

=i

⑤max==i

32.下面函数用来删除结点类型为intnode的链表中结点数据域值为x的一个结点。

structintnode{intdata;

structintnode*next;

intdeletenode(____①____,intx)

{structintnode*p=*headp,*last;

while(____②____){last=p;

____③____;

if(____④____)

{if(p==*headp)*headp=p->

next;

else____⑤____;

free(p);

return

(1);

elsereturn(0);

①structintnode**headp

②p&

p->

data!

=x;

③p=p->

next

④p

⑤last->

next=p->

五、程序设计题(总题数:

50.00)

33.设计程序:

从键盘输入一个三位整数,然后将该三位整数的各位数字重新排列,输出重新排列后的最大的三位整数。

#include<

stdio.h>

intmain()

{intn,a,b,c,t,m;

n);

a=n/100;

b=n/10%10;

c=n%10;

if(a<

b){t=a;

c){t=a;

a=c;

c=t;

if(b<

c){t=b;

b=c;

m=a*100+b*10+c;

%d\n"

m);

return0;

34.在数组a中含有n个整数,函数fun的功能是找出数组a中没有出现的最小正整数。

例如,数组a为{-8,5,1,3},则未出现的最小正整数是2;

又如数组a为{1,3,2},则未出现的最小正整数是4。

请采用尽量高效的算法完成函数fun,其返回值就是未出现的最小正整数。

intfun(inta[],intn)(分数:

intfun(inta[],intn)

{inti,*b;

b=(int*)malloc(n*sizeof(int));

n;

i++)b[i]=0;

i++){if(a[i]>

0&

a[i]<

=n)b[a[i]-1]=1;

i++)if(b[i]==0)break;

free(b);

returni+1;

35.设计程序完成:

在主函数中首先输入平面上N(由键盘输入)个点的坐标(x,y),接着调用Distance函数计算各点与原点的距离,然后调用Sort函数对所有点按与原点的距离从大到小排序,最后调用函数Output输出排序后各点的坐标及距原点的距离。

平面上的点用结构体Point实现。

各函数的声明如下:

voidDistance(structPointp[],intn);

//计算n个点与原点的距离

voidSort(structPointp[],intn);

//排序

voidOutput(structPointp[],intn);

//输出(分数:

15.00)

#include<

math.h>

structPoint{doublex,y,dis;

voidDistance(structPointp[],intn)

{inti;

i++)p[i].dis=sqrt(p[i].x*p[i].x+p[i].y*p[i].y);

voidSort(structPointp[],intn)

{inti,j;

structPointt;

n-1;

i++)

j<

n-i-1;

j++)

if(p[i].dis<

p[i].dis){t=p[j];

p[j]=p[j+1];

p[j+1]=t;

voidOutput(structPointp[],intn)

(%lf,%lf)dis=%lf\n"

p[i].x,p[i].y,p[i].dis);

{structPointp[1000];

intn,i;

i++)scanf("

%lf%lf"

p[i].x,&

p[i].y);

Distance(p,n);

Sort(p,n);

Output(p,n);

36.二叉排序树采用二叉链表存储,结点包含左孩子指针left,右孩子指针right和整数data,其定义为:

structNode{intdata;

structnode*left,*right;

};

请设计如下非递归算法SortTree按照从大到小输出非空二叉排序树所有结点的数据。

voidSortTree(structNode*root)(分数:

voidSortTree(structNode*root)

{structNode*stack[1000],*p=root;

inttop=0;

while(p){stack[top++]=p;

p=p->

right;

while(top>

0)

{p=stack[--top];

p->

data);

p=p->

leftt;

while(p){stack[top++]=p;

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

当前位置:首页 > PPT模板 > 其它模板

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

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