南京林业大学2003年快题|南京林业大学2003年C程序设计考研试题

考研 2021-03-20 网络整理 可可

【shitiku.jxxyjl.com--考研】

一. 选择题(40分)

  1..当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是______

  A c=b=a; B (a=c)‖(b=c);

  C (a=c)&&(b=c); D a=c=b;

  2.在C语言中,不正

  确的int类型的常数是________

  A 32768 B 0 C 037 D 0xAF

  3.以下程序的输出结果是________

  main( )

  { int a= -1,b=1,k;

  if((++a<0)&& ! (b-- <=0))

  printf("%d %d\n",a,b);

  else

  printf("%d %d\n",b,a);}

  A -1 1 B 0 1 C 1 0 D 0 0

  4.在C语言类型中,int ,char, short等类型的长度是_________

  A.固定的 B.由用户自己定义 C.任意的 D.与机器字长有关

  5.设a=1,b=2,c=3,d=4,则表达式:a

  A 4 B 3 C 2 D 1

  6. 下列说法错误的是______________

  A.结构体变量可以被整体赋值.

  B. 可以取结构体变量的地址

  C. 可以取结构体变量成员的地址

  D. 结构体类型的成员可以定义成该结构体类型的指针类型

  7.设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是____

  A 1 B 0 C -1 D 2

  8. . 设有程序段: t=6;a=7;b=8; if(a=b)t=a;,这段程序执行后,t的结果是______

  A. 6 B.7 C.8 D.0

  9.下列描述中不正确的是________

  A)字符型数组中可以存放字符串

  B)可以对字符型数组进行整体输入、输出

  C)可以对整型数组进行整体输入、输出

  D)不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

  10.若a为二维数组,它有m列,则a[i][j]在数组中的位置是_________

  A. i*m+j B. j*m+i C. i*m+j-1 D. i*m+j+1

  11. 下列语句中符合C语言语法的赋值语句是__________

  A a=7+b+c=a+7; B a=7+b++=a+7;

  C ) a=7+b,b++,a+7 D a=7+b,c=a+7;

  12. 若a为二维数组,则a[1][3]等价于_________

  A. *((a+1)+3) B. *(a[1]+3) C. (*(a+1)+3) D. &a[1]+3

  13.下面程序段不是死循环的是_____________

  A. int j=100;

  while(1){j=j%100+1;if(j>100)break;}

  B. for( ; ; );

  C. int k=0; do{ ++k;}while(k>=0);

  D. int s=36; while(s);--s;

  14.下列表达式中,错误的是______.

  A.2>1 ? a:b B.i+++j C.4.0%2.0 D.x*=y+8

  15.a,b为整数且b!=0,则表达式(a/b)*b+a%b的值为______的值.

  A.a B.b C.a被b除的余数部分 Da被b除商的整数部分

  16.若以数组元素作为函数的实参,则实参向形参传送的是______.

  A.数组元素的地址 B.数组元素的值 C.数组的首地址 B.数组名

  17.设有如下的共用体定义:

  union data

  {int i;

  long b;

  float f;}a;

  则a所占的内存单元为______个字节.

  A.4 B.6 C.8 D.10

  18.语句:printf("%d",(a=2)&&(b= -2);的输出结果是________

  A 无输出 B 结果不确定 C -1 D 1

  19.下列选项中不是C语言main函数正确表达形式的是________?

  A.main(int argc,char *argv[]);

  B.main(ac,av) int ac;char **av;

  B.main(c,v) int c;char *v[];

  D.main(argc,argv) int argc;char argv[];

  20.执行for(j=1;j++<4;);语句后变量j的值是_________

  A. 3 B. 4 C. 5 D.不定

  二.填充(20分)

  1. C语言的数据类型中,构造类型包括:数组,__________和__________.

  2.设x,y,z,t均为int型变量,则执行以下语句后,t的值为_________

  x=y=z=1;

  t=++x||++y&&++z;

  3.C语言的运算符要确定的两个方面分别是__________和__________.

  4. 在函数内使用static是_________,在函数外使用static是________。

  5.对于语句:scanf("%3d%3d",&a,&b);,若输入123456,则a和b的值分别为_______和_______.

  6.设有二维数组 inta[2][2],*p;,则a[I][j]三种其他表示是______________,

  ____________,___________。

  7.字符串的长度是_________________,它的存储空间大小是_______。

  8.静态变量赋初值是________赋值,动态变量赋初值是___________赋值。

  9.链表中每个结点至少应包括二个部分,它们是__________和__________.

  10.用数组名作函数参数时,形参和实参的结合是采用__________,因为数组名是

  数组的__________.

  三.程序分析题(20分)

  1. 阅读下面程序,给出输出结果。

  main( )

  { int i, j, k;

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

  { printf(“\n”);

  if(i<=5)

  {for(j=1; j<=i; j++)

  { for(k=1;k<=5-i;k++)

  printf(“ ”);

  printf(“* “); }

  else

  for (j=1; j<=10-i;j++)

  {for(k=1;k<=i-5;k++)

  printf(“ ”);

  printf(“* ”);}}}

  2. 阅读下面程序,指出函数所实现的功能。

  void ins(char s[ ], int start, char t[ ])

  { int m, n,i,k;

  n=0;m=0;

  for(i=0;s[i]!=’\0’;i++) m++;

  for(i=0;t[i]!=’\0’;i++) n++;

  for(k=1 ; k

  for(k=start;k

  s[k]=t[k-start];

  s[m+n]=’\0’;

  }

  3. 阅读下面程序,指出下面程序所完成的功能

  void st(char *a [ ],int n )

  { int i,j,k;

  char *m;

  for(i=1; i

  { m=a[i]; k=i;

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

  if (strcmp(a[k],a[j])>0), k=j;)

  m=a[i]; a[i]=a[k]; a[k]=m; }

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

  printf(“%s”, a[i]);}

  4.分析以下程序:

  #include “string.h”;

  main()

  {char c,string[81];

  int i,a=0,b=0;

  gets(string);

  for(i=0;(c=string[i])!="\0";i++)

  if (c==" ")a=0;

  else if (a==0)

  {a=1;b++;}

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

  }

  该程序的作用是_________________.若输入:a b c,则程序运行后,输出结果为______,

  且c的值为______,a的值为______.

  5. 阅读下面程序,指出函数所实现的功能。

  void lnsort(int L[ ],int n)

  {int i,j;

  for( i=2;i<=n;i++)

  {L[0]=L[i];

  j=i-1;

  while(L[0]

  {L[j+1]=L[j];

  j--;

  }

  L[j+1]=L[0];

  }

  }

  四.完成下列程序(20分)

  1. 下面程序是查找学生的成绩,完成该程序。

  main( )

  { void search (float (*p) [3], int i );

  float score [4][3]={{75,78,82},{66,72,77},{85,90,81},{74,89,68}};

  while (1)

  { scanf (“%d” &i );

  if(___1____)break;

  search(_____2_______);}}

  void search (float (*p)[3],int i )

  { int k;

  print (“The score of No %d are \n”,i );

  for(_____3_______)

  printf( “%5.2f”,_____4_________);}

  2. 已知两个线性表的元素按非递减排列,合并两表得到一新表,仍然是按

  非递减排列,两个线性表以-1为结束标志。以函数来完成该操作,函数如下,

  完成所缺语句。

  void LL(int la[ ], int lb[ ], int lc[ ] ) // la,lb是已知二表//

  { int pa, pb, pc;

  pa=0 ; pb=0;pc=0;

  if (la[pa]

  else {________6__________}

  while(_______7___________)

  { if (la[pa]<=lb[pb])

  { lc[pc]=la[pa]; __8___; __9___;}

  else {____10_________}}

  while (_____11________)

  ____12___;

  while (____13________)

  ____14______;

  }

  3.在一数组里装数取数,从数组中所装的数的最后一项的下一个空单元装数,

  从数组中所装的数的最後一个取数,取数后该单元成空单元,如果取数已到数

  组空,-1表示未取到,以下是对数组的一次取数操作,函数值是所取的值,完成该

  函数。

  define MAX 100

  int pop ( int s[ ] ,int top )

  { if (___15______) return (-1);

  top = ___16________;

  return (____17_______) ;}

  4.在 n 行 n 列的矩阵中,每行都有最大的数,本程序求这 n 个最大数中的最小一个

  [程序1.2]

  #include〈stdio.h〉

  #define N 100

  int a[N][N];

  void main()

  { int row ,col ,max ,min ,n;

  /*输入合法 n (〈100 〉,和输入 n×n 个整数到数组 a 的代码略*/

  for ( row = 0;row < n;row++) {

  for ( max = a[row][0],col = l ;col < n;col++)

  if (__18_) max = a[row][col];

  if (__19__) min = max;

  else if(__20__) min = max;

  }

  printf ("The min of max numbers is %d\n",min);

  }

  五. 编程题(50分)

  1. 有函数f(x)=cos(x)可展开成:f(0)+f’(0)x/1!+f”(0)x /2!+…

  编写函数程序求cos(x),使误差小于0.0000001。

  2. 有一个链表,输出所有结点的数值,确定该链表的长度,并将链表的头结点

  与尾结点连接.编写完成这样操作的函数。这里的结点定义为

  typedef struct node {int data ;

  struct node * next ; } Node ;

  3.将一个整数a左循环移位n次,求位移后的这个数.写出子函数

  4.写函数,将一个十进制数转换成一个十六进制数,并输出.

  5. 如果有n个棋子,甲、乙两方轮流取棋子,每方至少取一个棋子,最多取m个棋子

  谁最后取剩下的一个棋子,谁就输,如果甲方先取,请给出甲方赢的算法.(写出函数)

 

本文来源:https://shitiku.jxxyjl.com/kaoyan/2861.html

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计