当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(67)
发布时间:2011/9/30 11:23:12 来源:城市学习网 编辑:ziteng
  一、填空题:给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。

  请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

  注意:源程序存放在考生文件夹下BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #define N 20

  void fun(int *a)

  {int i, x, n=0;

  x=rand() ;

  /**********found**********/

  while (n<__1__)

  {for(i=0; i

  /**********found**********/

  if(x==a[i]) __2__;

  /**********found**********/

  if(i==__3__){a[n]=x; n++;}

  x=rand() ;

  }

  }

  main()

  {int x[N]={0} ,i;

  fun(x);

  printf("The result : \n");

  for(i=0; i

  {printf("M",x[i]);

  if((i+1)%5==0)printf("\n");

  }

  printf("\n\n");

  }

  解题答案:

  /**********第一空**********/

  while (n

  /**********第二空**********/

  if(x==a[i]) break;

  /**********第三空*********/

  if(i==n){a[n]=x; n++;}

  ****************************************** [NextPage]   二、改错题:给定程序MODI1.C中函数fun的功能是: 先从键盘上输入一个3行3列矩阵的各个元素的值, 然后输出主对角线元素之和。

  请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。

  注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  void fun()

  {

  int a[3][3],sum;

  int i,j;

  /*********found**********/

  ______;

  printf("Input data:");

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

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

  /*********found**********/

  scanf("%d",a[i][j]);

  }

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

  sum=sum+a[i][i];

  printf("Sum=%d\n",sum);

  }

  main()

  {

  fun();

  }

  解题答案:

  /*********found**********/

  sum=0;5

  /*********found**********/

  scanf("%d,",&a[i][j]);}

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

 [NextPage]   三、程序题:编写程序, 实现矩阵(3行3列)的转置(即行列互换) 例如, 输入下面的矩阵:

  100 200 300

  400 500 600

  700 800 900

  程序输出:

  100 400 700

  200 500 800

  300 600 900

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

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

  给定源程序:

  #include

  void fun(int array[3][3])

  {

  }

  main()

  {

  int i,j;void NONO ();

  int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};

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

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

  printf("}",array[i][j]);

  printf("\n");

  }

  fun(array);

  printf("Converted array:\n");

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

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

  printf("}",array[i][j]);

  printf("\n");

  }

  NONO();

  }

  void NONO ()

  {

  /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */

  int i,j, array[3][3];

  FILE *rf, *wf ;

  rf = fopen("in.dat","r");

  wf = fopen("out.dat","w");

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

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

  fscanf(rf, "%d", &array[i][j]);

  fun(array);

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

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

  fprintf(wf, "}", array[i][j]);

  fprintf(wf, "\n");

  }

  fclose(rf);

  fclose(wf);

  }

  参考答案:

  int fun(int array[3][3])

  {

  int i,j,arr[3][3] ;

  memcpy(arr, array, 9*sizeof(int)) ;

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

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

  array[i][j] = arr[j][i] ;

  }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved