新祥旭考研官网欢迎您!


武科大考研辅导班:2019年武汉科技大学855C语言程序设计考研真题

【新祥旭考研官方网站】 / 2020-03-23

 武科大考研辅导班:2019年武汉科技大学855C语言程序设计考研真题

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

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

A#name  total    Bnode value_max   C_var long    Dstu-code  a+b

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

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

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

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

Cscanf(%d%s%lf,&x,y,&z);      Dscanf(%x%s%3.2f,&x,y,&z);

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

At=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) Dswitch(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 B0     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}};

Cint value[2][3]={1,2,3,4,5,6};   Dint 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); 则正确的函数声明是(    )。

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

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

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

Ay=func(x);    Bfunc(x);    Cfunc()=x;     Dy=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<m;i=i+m-1)

for(j=0;j<n;j++)  s+=arr[i*n+j];

for(j=0;i<n;j=j+n-1)

for(i=1;i<m-1;i++)  s+=arr[i*n+j];

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)

全方位权威辅导,考研复试效率高

面授一对一
在线一对一
魔鬼集训营
咨询课程 预约登记

以效果为导向    以录取为目标

添加微信咨询考研问题
北清考研定制 985考研定制 211考研定制 学硕考研定制 专硕考研定制 北京考研私塾
x