模拟试题

3773考试网计算机等级考试模拟试题正文

2014年3月全国计算机二级C语言上机模拟试题十三之3

来源:2exam.com 2013-10-30 19:39:22

解题思路: 

  程序中是使用while循环语句和结合结构指针p来找到数据域中的最大值。 

  第一处: p指向形参结构指针h的next指针,所以应改为:p=h->next;。 

  第二处: p指向自己的下一个结点,所以应改为:p=p->next, 

  *************************************************** 

  请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中, 一维数组中数据的个数存放在形参n所指的存储单元中。 

  例如, 二维数组中的数据为: 

  33 33 33 33 

  44 44 44 44 

  55 55 55 55 

  则一维数组中的内容应是: 

  33 33 33 33 44 44 44 44 55 55 55 55。 

  注意:部分源程序在文件PROG1.C中。 

  请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 

  给定源程序: 

  #include  

  void fun(int (*s)[10], int *b, int *n, int mm, int nn) 

  { 

  } 

  main() 

  { int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j ; 

  int a[100] = {0}, n = 0 ; 

  printf("The matrix:\n") ; 

  for(i = 0 ; i < 3 ; i++) 

  { for(j = 0 ; j < 4 ; j++) printf("%3d",w[i][j]) ; 

  printf("\n") ; 

  } 

  fun(w, a, &n, 3, 4) ; 

  printf("The A array:\n") ; 

  for(i = 0 ; i < n ; i++) printf("%3d",a[i]);printf("\n\n") ; 

  NONO() ; 

  } 

  解题思路: 

  本题是把二维数组中的数据按行存放到一维数组中。 

  1. 计算存放到一维数组中的位置。 

  2. 取出二维数组中的数据存放到一维数组(已计算出的位置)中。 

  参考答案: 

  void fun(int (*s)[10], int *b, int *n, int mm, int nn) 

  { 

  int i, j, k ; 

  for(i = 0 ; i < mm ; i++) 

  for(j = 0 ; j < nn ; j++) { 

  k = i * nn + j ; 

  b[k] = s[i][j] ; 

  } 

  *n = mm * nn ; 

  } 

  main() 

  { int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j ; 

  int a[100] = {0}, n = 0 ; 

  printf("The matrix:\n") ; 

  for(i = 0 ; i < 3 ; i++) 

  { for(j = 0 ; j < 4 ; j++) printf("%3d",w[i][j]) ; 

  printf("\n") ; 

  } 

  fun(w, a, &n, 3, 4) ; 

  printf("The A array:\n") ; 

  for(i = 0 ; i < n ; i++) printf("%3d",a[i]);printf("\n\n") ; 

  NONO() ; 

  } 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1