当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(16)
发布时间:2011/8/19 15:15:05 来源:城市学习网 编辑:ziteng
  一、填空题:程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。

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

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

  给定源程序:

  #include

  typedef struct

  {int num;

  char name[9];

  char sex;

  struct {int year,month,day ;} birthday;

  float score[3];

  }STU;

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

  void show(STU ___1___)

  {int i;

  printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day);

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

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

  printf("%5.1f", ___2___);

  printf("\n");

  }

  main()

  {STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0, 82.0 };

  printf("\nA student data:\n");

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

  show(___3___);

  }

  解题答案:

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

  void show(STU tt)

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

  printf("%5.1f", tt.score[i]);

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

  show(std);

  }

  ****************************************** [NextPage]  二、改错题:给定程序MODI1.C中函数 fun 的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。

  请改正程序中的错误,使它能得出正确的结果。

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

  给定源程序:

  #incl#include

  #define N 20

  int fun (int * a, int n)

  {int i, m, t, k ;

  for(i=0;i<2;i++) {

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

  m=0;

  for(k=i+1;k

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

  if(a[k]>a[m]) k=m;

  t=a[i];a[i]=a[m];a[m]=t;

  }

  }

  main()

  {int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;

  for (i=0; i

  fun (b, n);

  for (i=0; i

  }

  解题答案:

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

  m=i;

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

  if(a[k]>a[m])m=k;

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

  [NextPage]   三、程序题:请编写一个函数 unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若 w 是 n (n ≥ 2)位的整数,函数求出w的低 n-1位的数作为函数值返回。 例如:w 值为 5923,则函数返回 923; w 值为 923 则函数返回 23。

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

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

  你编写的若干语句。

  给定源程序:

  #include

  unsigned fun (unsigned w)

  {

  }

  NONO()

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

  unsigned x ;

  int i ;

  FILE *rf, *wf ;

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

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

  for(i = 0 ; i < 20 ; i++) {

  fscanf(rf, "%u", &x);

  fprintf(wf, "%u\n", fun(x));

  }

  fclose(rf);

  fclose(wf);

  }

  main()

  {unsigned x;

  printf ("Enter a unsigned integer number : "); scanf ("%u", &x);

  printf ("The original data is : %u\n", x);

  if (x < 10) printf ("Data error !");

  else printf ("The result : %u\n", fun (x));

  NONO();

  }

  参考答案:

  unsigned fun ( unsigned w )

  {

  if(w>10000) w %= 10000 ;

  else if(w>1000) w %= 1000 ;

  else if(w>100) w %= 100 ;

  else if(w>10) w %=10 ;

  return w ;

  }

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