当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(90)
发布时间:2011/7/28 15:40:52 来源:城市学习网 编辑:ziteng
  一、填空题
  人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
  请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
  #include
  #include
  #define  N 8
  typedef  struct
  {
  char  num[10];
  int  year, month, day;
  }  STU;
  ___1___ fun(STU  *std, char  *num)
  {
  int  i;
  STU  a = {"", 9999, 99, 99};
  for (i=0; i         if (strcmp(___2___, num) == 0)
  return (___3___);
  return a;
  }
  main()
  {
  STU  std[N] =
  {
  {"111111", 1984, 2, 15}, {"222222", 1983, 9, 21},
  {"333333", 1984, 9, 1}, {"444444", 1983, 7, 15},
  {"555555", 1984, 9, 28}, {"666666", 1983, 11, 15},
  {"777777", 1983, 6, 22}, {"888888", 1984, 8, 19}
  };
  STU  p;
  char  n[10] = "666666";
  p = fun(std, n);
  if (p.num[0] == 0)
  {
  printf("\nNot found !\n");
  }
  else
  {
  printf("\nSucceed !\n  ");
  printf("%s   %d-%d-%d\n", p.num, p.year, p.month, p.day);
  }
  }
  答案:
  1、STU
  2、std[i].num
  3、std[i] [NextPage]  二、改错题
  下列给定程序中,函数fun的功能是:计算n的5次方的值(规定n的值大于2、小8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15。
  请改正函数fun中的错误,使它能得出正确的结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  #include
  #include
  int fun(int  n, int  *value)
  {
  int  d, s, i;
  /********found********/
  d = 0;
  /********found********/
  s = 1;
  for (i=1; i<=5; i++)
  d = d*n;
  *value = d;
  for (i=1; i<=3; i++)
  {
  s = s + d;
  /********found********/
  s = s/10;
  }
  return s;
  }
  main()
  {
  int  n, sum, v;
  do
  {
  printf("\nEnter n(2    } while (n<=2 || n>=8);
  sum = fun(n, &v);
  printf("\n\nThe result:\n value=%d sum=%d\n\n", v, sum);
  }
  答案:
  1、d=0;应改为 d=1;
  2、s=1;应改为 s=0;
  3、s=s/10;应改为 d=d/10;
  [NextPage]   三、编程题
  请编写函数fun,其功能是:计算并输出下列多项式的值:
  例如,若主函数从键盘给n输入8后,则输出为s=0.662872。
  注意:n的值要求大于1但不大于100。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  #include
  double fun(int n)
  {
  }
  main()
  {
  int  n;
  double  s;
  FILE  *out ;
  printf("\nInput n:  ");
  scanf("%d",&n);
  s=fun(n);
  printf("\ns=%f\n",s);
  out=fopen("out.dat","w");
  for (n = 5; n < 10; n++)
  fprintf(out, "%f\n", fun(n));
  fclose(out);
  }
  答案:
  double  fun (int  n)
  {
  int  i;
  double   sn=0.0;
  for( i=1;i<=n;i++)
  sn+=(1.0/(2*i-1)-1.0/(2*i));
  return  sn;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved