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

文章作者 100test 发表时间 2007:02:25 10:38:43
来源 100Test.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=j0 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("==",&.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个棋子
  谁最后取剩下的一个棋子,谁就输,如果甲方先取,请给出甲方赢的算法.(写出函数)

相关文章


南京林业大学2003年环境科学导论考研试题
南京林业大学2003年C程序设计考研试题
南京林业大学2003年高等数学考研试题
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛