研招信息

【启航好学节】一年一度全科大促,限时领券>>


2019武汉科技大学C语言程序设计自命题试题及答案分析

 2020-07-30 16:21:49

C语言程序设计 真题 答案

2019年全国硕士研究生招生考试初试自命题试题

科目名称:C语言程序设计(□A卷√B卷)科目代码:855

考试时间:3小时 满分150分

可使用的常用工具:√无 □计算器 □直尺 □圆规(请在使用工具前打√)

注意:所有答题内容必须写在答题纸上,写在试题或草稿纸上的一律无效;考完后试题随答题纸交回。

一、选择题(共15小题,每小题2分,共30分)

1. 以下均是合法变量名的是( )。

A)#name total B)node value_max C)_var long D)stu-code a+b

2. 以下选项中不属于C语言类型的是( )。

A)short int B)unsigned long int C)char D)bool

3. 若有声明语句:int x; char y[20]; double z; 则正确的输入语句是( )。

A)scanf(“%d%c%le\n”,&x,&y,&z); B)scanf(“%2d%s%lf”,&x,&y,&z);

C)scanf(“%d%s%lf”,&x,y,&z); D)scanf(“%x%s%3.2f”,&x,y,&z);

4. 若a、b和t都为int变量,则下面不能交换变量a和b值的是( )。

A)t=a; a=b; b=t; B)a=t; t=b; b=a;

C)t=b; b=a; a=t; D)a=a+b; b=a-b; a=a-b;

5. 若有定义:int a=1,b=2; float x=3,w; 则合法的switch语句是( )。

A)switch(a) B)switch(b)

{ case 1: w=a/b; break; { case 1: z=a%b;

case 2: w=a%b; break; } case 2: z=a/b; break; }

C)switch (x) D)switch(a+b);

{ case 2: w=a%b;break; { case 3:

case 1: w=a/b; break; } case 2: w=a%b; break; }

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

scanf("%d,%d",&a,&b);

if(a>b) a=b; b=a; else a++; 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. 如果有定义:int x=0,s=0; 则下面程序段的执行结果是( )。

while(!x != 0) s+=x++;

printf(“%d”,s);

A)1 B)0 C)无限循环 D)控制表达式非法,无法编译

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

A)char a[10]={'A','B','C','D','\0'}; B)char a[10]; a="ABCDE";

C)char *p; *p="ABCDE"; D)char *s; scanf(“%s”, s);

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

A)int value[2][ ]={{1,1},{2,2}}; B)int value[ ][3]={{1,,3},{4,5,6}};

C)int value[2][3]={1,2,3,4,5,6}; D)int value[ ][3]={{1},{4,6,}};

11. 函数fun和实参数组的声明形式为:void fun(char ch,float x[]); float a[5];

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

A)fun("a",a[]); B)t=fun('D',a); C)fun('65',2.8); D)fun(32,a[5]);

12. 设有定义int a[3][3];和函数调用语句sort(a,3); 则正确的函数声明是( )。

A)void sort(int a,n); B)void sort(int a[][],int n);

C)void sort(int a[][3],int n); D)void sort(int a[][3],n);

13. 有函数定义:int func(int *p),x和y是int型变量,则( )是正确的调用。

A)y=func(x); B)func(x); C)func()=x; D)y=func(&x);

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

struct BOOK{ struct { int year,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的语句是( )。

struct person{ char title[20]; int code; };

struct person book[5]={"Physics",17,"Math",18,"English",20,"History",18};

A)printf("%c",book[0].title[1]); B)printf("%c",book[1].title[4]);

C)printf("%c",book[2].title[7]); D)printf("%c",book[3].title[6]);

二、判断题(共10小题,每小题2分,共20分)

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

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

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

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

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

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

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

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

9. 语句fp=fopen("a:\aa.dat","ab");中变量fp的正确定义为:FILE *fp;

10. 若有定义:int a[4][5]; 则表达式a+3表示a数组第3行的首地址。

三、读程序写出程序运行结果(共4小题,每小题5分,共20分)

1.

void main( ) //输入:abcAxyz回车

{ char ch=0;

while((ch=getchar())!='\n')

{ if(ch>='a'&&ch<='z'){ ch-=30; if(ch>'Z') ch-=26; }

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

}

}

2.

void main( )

{ char *name[4] ={"Tom","Mike","John","Wang"}, *p=name[0];

int i;

for(i=0;i<4;p=name[++i]) printf("%c",*p);

}

3.

int fun(int arr[],int m,int n)

{ int i,j,s=0;

for(i=0;i

for(j=0;j

for(j=0;i

for(i=1;i

return s;

}

void main(void )

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

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

printf("t=%d\n",t);

}

4.

void move(int *arr,int n,int m)

{ 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);

}

void main()

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

move(number,10,8);

for(i=0;i<10;i++) printf("%d",number[i]);

}

四、程序填空题(共15个空,每空2分,共30分)

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

void main(void)

{ int i,s,n,t ;

for ( i=100 ; i<1000 ; i++ )

{ s = ① ; n = i ;

while ( ② ){ t=n%10; s=s- ③ ; ➃ ; }

if ( ➄ ) printf(″%d″, i );

}

}

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

void sort(int r[],int n)

{ int i=0,j,t,min,max;

while( ① )

{ min=max=i;

for (j=i+1; ② ;++j)

{ if( ③ ) min=j; else if(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]; r[n-i-1]=t; }

}

i++;

}

}//sort

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

struct intnode { int data; struct intnode *next; };

int deletenode( ① , int x)

{ struct intnode *p=*headp, *last;

while( ② ) { last=p; ③ ; }

if( ➃ )

{ if(p==*headp) *headp=p->next; else ➄ ;

free(p) ; return(1);

}

else return(0);

}

五、程序设计题(共4小题,前2小题各10分,后2小题各15分,共50分)

1. 设计程序:从键盘输入一个三位整数,然后将该三位整数的各位数字重新排列,输出重新排列后的最大的三位整数。

2. 在数组a中含有n个整数,函数fun的功能是找出数组a中没有出现的最小正整数。例如,数组a为{-8,5,1,3},则未出现的最小正整数是2;又如数组a为{1,3,2},则未出现的最小正整数是4。

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

int fun(int a[], int n)

3.设计程序完成:在主函数中首先输入平面上N(由键盘输入)个点的坐标(x,y),接着调用Distance函数计算各点与原点的距离,然后调用Sort函数对所有点按与原点的距离从大到小排序,最后调用函数Output输出排序后各点的坐标及距原点的距离。平面上的点用结构体Point实现。各函数的声明如下:

void Distance(struct Point p[], int n); // 计算n个点与原点的距离

void Sort(struct Point p[], int n); //排序

void Output(struct Point p[], int n); //输出

4. 二叉排序树采用二叉链表存储,结点包含左孩子指针left,右孩子指针right和整数data,其定义为:struct Node{ int data; struct node *left, *right; };

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

void SortTree(struct Node *root)

2019年全国硕士研究生招生考试初试自命题试题答案

科目名称:C语言程序设计(□A卷√B卷)科目代码:855

考试时间:3小时 满分150分

可使用的常用工具:√无 □计算器 □直尺 □圆规(请在使用工具前打√)

注意:所有答题内容必须写在答题纸上,写在试题或草稿纸上的一律无效;考完后试题随答题纸交回。

一、选择题(共15小题,每小题2分,共30分)

BDCBA DCBAC BCDDA

二、判断题(共10小题,每小题2分,共20分)

ⅩⅩⅩ√√ √Ⅹ√√√

三、读程序写出程序运行结果(共4小题,每小题5分,共20分)

1.CDEAZAB 2.TMJW 3.t=32 4.57924681013

四、程序填空题(共15个空,每空2分,共30分)

1.①I ②n ③t*t*t ➃n=n/10 ➄i==0

2.①i

3.①struct intnode **headp ②p&&p->data!=x;

③p=p->next ➃p ➄last->next=p->next

五、程序设计题(共4小题,前2小题各10分,后2小题各15分,共50分)

1.

#include

int main()

{ int n,a,b,c,t,m;

scanf("%d",&n);

a=n/100; b=n/10%10; c=n%10;

if(a

if(a

if(b

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

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

return 0;

}

2.

int fun(int a[],int n)

{ int i,*b;

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

for(i=0;i

for(i=0;i0&&a[i]<=n) b[a[i]-1]=1; }

for(i=0;i

free(b);

return i+1;

}

3.

#include

#include

struct Point{ double x,y,dis; };

void Distance(struct Point p[],int n)

{ int i;

for(i=0;i

}

void Sort(struct Point p[],int n)

{ int i,j;

struct Point t;

for(i=0;i

for(j=0;j

if(p[i].dis

}

void Output(struct Point p[],int n)

{ int i;

for(i=0;i

}

int main()

{ struct Point p[1000];

int n,i;

scanf("%d",&n);

for(i=0;i

Distance(p,n);

Sort(p,n);

Output(p,n);

return 0;

}

4.

void SortTree(struct Node *root)

{ struct Node *stack[1000],*p=root;

int top=0;

while(p) { stack[top++]=p; p=p->right; }

while(top>0)

{ p=stack[--top];

printf("%d",p->data);

p=p->leftt;

while(p){ stack[top++]=p; p=p->right; }

}

}

【25考研辅导课程推荐】:25考研集训课程,VIP领学计划,25考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。

查看全文

上一篇:北京大学2014年国发院经济学908真题

下一篇:2019武汉科技大学英美文学基础自命题试题及答案分析

声明:本站部分文章来源于网络,若侵犯到您的权利,请联系
400-882-5755。
24考研国家线
25在职考研
25暑期集训营
推荐课程
面授课网课

首页

课程

成长计划

研招

我的

每日10 份   抢先预约