当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(32)
发布时间:2011/7/10 10:23:31 来源:城市学习网 编辑:ziteng
  第32套
  填空题
  请补充fun函数,该函数的功能是求一维数组x[N]的平均值,并多所的结果进行四舍五入保留两位小数。
  例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0}时,输出结果为:avg=15.030000.
  注意:部分源程序给出如下
  请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
  试题程序:#include <stdio.h>
  #include <conio.h>
  double fun(double  x[10])
  {
  int  i;
  long  t;
  double  avg = 0.0;
  double  sum = 0.0;
  for (i=0; i<10; i++)
  ___1___;
  avg = sum/10;
  avg = ___2___;
  t = ___3___;
  avg = (double)t/100;
  return avg;
  }
  main()
  {
  double  avg, x[10] =
  {15.6, 19.9, 16.7, 15.2, 18.3, 12.1, 15.5, 11.0, 10.0, 16.0};
  int  i;
  printf("\nThe original data is :\n");
  for (i=0; i<10; i++)
  printf("%6.1f", x[i]);
  printf("\n\n");
  avg = fun(x);
  printf("average=%f\n\n", avg);
  }
  第1处填空:sum+=x[i]或sum=sum+x[i]
  第2处填空:avg*1000或1000*avg
  第3处填空:(avg+5)/10或(5+avg)/10 [NextPage]  改错题
  下列给定程序中,函数fun的功能是:s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均埴,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数下是5的倍数,多余部分忽略下计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
  请改正程序中的错误,使其能得出正确结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  试题 程序:
  #include <stdio.h>
  #define  SIZE 20
  int fun(double  *s, double  *w)
  {
  int  k, i;
  double  sum;
  for (k=2, i=0; i<SIZE; i++)
  {
  s[i] = k;
  k += 2;
  }
  sum = 0.0;
  for (k=0, i=0; i<SIZE; i++)
  {
  sum += s[i];
  /********found********/
  if (i+1%5 == 0)
  {
  w[k] = sum/5;
  sum = 0;
  k++;
  }
  }
  return k;
  }
  main()
  {
  double  a[SIZE], b[SIZE/5];
  int  i, k;
  k = fun(a, b);
  printf("The original data:\n");
  for (i=0; i<SIZE; i++)
  {
  if (i%5 == 0)
  printf("\n");
  printf("%4.0f", a[i]);
  }
  printf("\n\nThe result :\n");
  for (i=0; i<k; i++)
  printf("%6.2f ", b[i]);
  printf("\n\n");
  }
  第1处:if (i+1%5 ==0)应改为if ((i+1)%5==0)
  [NextPage]   编程题
  请编写函数FUN,其功能是:将S所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符外,其余 的全都删除:串中剩余字符所形式的一个新串放在T所指的数组中。
  例如,若S所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此必需删除:而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除。其他依此类推。最后T所指的数组中的内容应是135。
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:
  #include <conio.h>
  #include <stdio.h>
  #include <string.h>
  void fun(char *s, char t[])
  {
  }
  main()
  {
  char  s[100], t[100];
  FILE *out;
  printf("\nPlease enter string S:");
  scanf("%s", s);
  fun(s, t);
  printf("\nThe result is: %s\n", t);
  out=fopen("out.dat", "w");
  strcpy(s, "Please enter string S:");
  fun(s, t);
  fprintf(out, "%s", t);
  fclose(out);
  }
  答案是:
  void fun(char *s,char t[])
  {
  int I,j=0,n;
  n=strlen(s);
  for(i=0;i<n;i++)
  if(i%2!=0&&s[i]%2!=0)
  {
  t[j]=s[i];
  j++;
  }
  t[j]=’\0’;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved