当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(63)
发布时间:2011/7/20 13:11:20 来源:城市学习网 编辑:ziteng
  第一题:
  已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回函数。
  请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
  #include
  #include
  #define  N 10
  typedef  struct ss
  {
  char  num[10];
  int  s;
  } STU;
  fun(STU  a[], STU  *s)
  {
  stu h;
  int  i;
  h = a[0];
  for (i=1; i              if (a[i].s < h.s)
  h = a[i];
  *s =  h ;
  }
  main()
  {
  STU  a[N] =
  {
  {"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},
  {"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},
  {"A09", 80}, {"A10", 71}
  }, m;
  int  i;
  printf("***** The original data *****\n");
  for (i=0; i              printf("No = %s  Mark = %d\n", a[i].num, a[i].s);
  fun(a, &m);
  printf("***** THE  RESULT *****\n");
  printf("The lowest  :  %s , %d\n", m.num, m.s);
  } [NextPage]   第二题:
  下列给定程序中,函数fun的功能是:将字符串p中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串之后,字符串b 中的内容则为ABC DEF GHI JK。
  请改正程序中的错误,使它能得出正确的结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  #include
  void fun(char  *p, char  *b)
  {
  int  i, k = 0;
  while (*p)
  {
  /********found********/
  i = 0;
  /********found********/
  while (i<3 && *p)
  {
  b[k] = *p;
  k++;
  p++;
  i++;
  }
  /********found********/
  if (*p)
  b[k++] = ' ';
  }
  b[k] = '\0';
  }
  main()
  {
  char  a[80], b[80];
  printf("Enter a string:      ");
  gets(a);
  printf("The original string:  ");
  puts(a);
  fun(a, b);
  printf("\nThe string after insert space:  ");
  puts(b);
  printf("\n\n");
  }
 [NextPage]   第三题:
  请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。
  例如,若主函数从键盘给n输入的值为856,则输出为sum=763。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  #include
  int fun(int n)
  {
  }
  main()
  {
  int  n,sum;
  FILE *out ;
  printf("Input n:  ");
  scanf("%d",&n);
  sum=fun(n);
  printf("sum=%d\n",sum);
  out=fopen ("out.dat","w");
  fprintf(out, "%d\n", fun(123));
  fprintf(out, "%d\n", fun(456));
  fprintf(out, "%d\n", fun(789));
  fprintf(out, "%d\n", fun(147));
  fprintf(out, "%d", fun(258));
  fclose (out );
  }
  int fun(int n)
  {
  int s=0,i;
  for(i=2;i<=n-1;i++)
  if(n%i==0)
  s+=i;
  return s;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved