当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(86)
发布时间:2011/7/25 8:43:07 来源:城市学习网 编辑:ziteng
  第一题:给定程序中,函数fun的功能是:将N*N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素挠回左边。
  例如,N=3,有下列矩阵:
  1  2  3
  4  5  6
  7  8  9
  计算结果为:
  3  1  2
  6  4  5
  9  8  7
  请勿改动主函数main和其他函数任何内容,仅在横线上填入所编写的若干表达式或语句。
  #include
  #define  N 4
  void fun(int  (*t)[N])
  {
  int  i, j, x;
  for (i=0; i<___1___; i++)
  {
  x = t[i][___2___];
  for (j=N-1; j>0; j--)
  t[i][j] = t[i][j-1];
  t[i][___3___] = x;
  }
  }
  main()
  {
  int  i, j, t[][N] =
  {21, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 33, 10};
  printf("The original array:\n");
  for (i=0; i {
  for (j=0; j   printf("-  ", t[i][j]);
  printf("\n");
  }
  fun(t);
  printf("\nThe result is:\n");
  for (i=0; i {
  for (j=0; j   printf("-  ", t[i][j]);
  printf("\n");
  }
  }
  答案:
  第一处 N
  第二处 N-1
  第三处 0 [NextPage]   第二题:下列给定程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数位:55 12 34,输出结果应当是: a=55.0,b=34.0,c=12.0。
  请改正程序中的错误,使它能得出正确的结果。
  注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
  #include
  void fun(float  *p, float  *q, float  *s)
  {
  /********found********/
  float  *k;
  if (*p < *q)
  {
  k = *p;
  *p = *q;
  *q = k;
  }
  /********found********/
  if (*s < *p)
  {
  k = *s;
  *s = *p;
  *p = k;
  }
  if (*q < *s)
  {
  k = *q;
  *q = *s;
  *s = k;
  }
  }
  main()
  {
  float  a, b, c;
  printf("Input a b c:");
  scanf("%f%f%f", &a, &b, &c);
  printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n", a, b, c);
  fun(&a, &b, &c);
  printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n", a, b, c);
  }
  答案:
  第一处  float*k;应改为float k;
  第二处  if(*s<*p) 应改为if(*s>*p)
 [NextPage]   第三题:请编写函数fun,其功能是:计算并输出给定10个数的方差:
  例如,给定的10个数为95.0、89.0、72.0、85.0、81.0、90.0、56.0,则输出为S=11.730729。
  请勿改动主函数main和其他函数中哦的任何内容,仅在函数fun的花括号填入所编写的若干语句。
  #include
  #include
  double fun(double x[10])
  {
  }
  main()
  {
  double s, x[10]= {95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};
  int i;
  FILE *out;
  printf("\nThe original data is :\n");
  for(i=0;i<10;i++)
  printf("%6.1f",x[i]);
  printf("\n\n");
  s=fun(x);
  printf("s=%f\n\n",s);
  out=fopen ("out.dat", "w");
  fprintf (out, "%f", s );
  fclose (out );
  }
  答案:
  double fun(double x[10])
  {
  int i,j;
  double s=0.0,s1=0.0;
  for(i=0;i<10;i++)
  s1+=x[i];
  s1/=10;
  for(j=0;j<10;j++)
  s+=(x[j]-s1)*(x[j]-s1);
  s/=10;
  s=pow(s,0.5);
  return s;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved