当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(98)
发布时间:2011/10/1 9:56:38 来源:城市学习网 编辑:ziteng
  一、填空题:给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。

  请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

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

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

  给定源程序:

  #include

  #include

  void fun(char *s, int a, double f)

  {

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

  __1__ fp;

  char str[100], str1[100], str2[100];

  int a1; double f1;

  fp = fopen("file1.txt", "w");

  fprintf(fp, "%s %d %f\n", s, a, f);

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

  __2__ ;

  fp = fopen("file1.txt", "r");

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

  fscanf(__3__,"%s%s%s", str, str1, str2);

  fclose(fp);

  a1 = atoi(str1);

  f1 = atof(str2);

  printf("\nThe result :\n\n%s %d %f\n", str, a1, f1);

  }

  main()

  {char a[10]="Hello!"; int b=12345;

  double c= 98.76;

  fun(a,b,c);

  }

  解题答案:

  /**********第一空**********/

  FILE* fp;

  /**********第二空**********/

  fclose(fp) ;

  /**********第三空**********/

  fscanf(fp,"%s%s%s", str, str1, str2);

  ****************************************** [NextPage]   二、改错题:给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误, 使它能得出正确的结果。

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

  给定源程序:

  #include

  #include

  #include

  #define N 10

  typedef struct ss

  {char num[10];

  int s;

  } STU;

  STU *fun(STU a[], int m)

  {STU b[N], *t;

  int i,j,k;

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

  t=(STU *)calloc(sizeof(STU),m)

  for(i=0; i

  for(k=0; k

  {for(i=j=0; i

  if(b[i].s > b[j].s) j=i;

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

  t(k)=b(j);

  b[j].s=0;

  }

  return t;

  }

  outresult(STU a[], FILE *pf)

  {int i;

  for(i=0; i

  fprintf(pf,"No = %s Mark = %d\n", a[i].num,a[i].s);

  fprintf(pf,"\n\n");

  }

  main()

  {STU a[N]={ {"A01",81},{"A02",89},{"A03",66}, {"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} };

  STU *pOrder;

  int i, m;

  printf("***** The Original data *****\n");

  outresult(a, stdout);

  printf("\nGive the number of the students who have better score: ");

  scanf("%d",&m);

  while(m>10)

  {printf("\nGive the number of the students who have better score: ");

  scanf("%d",&m);

  }

  pOrder=fun(a,m);

  printf("***** THE RESULT *****\n");

  printf("The top :\n");

  for(i=0; i

  printf(" %s %d\n",pOrder[i].num , pOrder[i].s);

  free(pOrder);

  }

  解题答案:

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

  t=(STU *)calloc(sizeof(STU),m);

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

  t[k]=b[j];

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

 [NextPage]   三、程序题:请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

  例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

  删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

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

  请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

  给定源程序:

  #include

  #define N 80

  int fun(int a[], int n)

  {

  }

  main()

  {int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10, 10},i,n=20;void NONO ();

  printf("The original data :\n");

  for(i=0; i

  n=fun(a,n);

  printf("\n\nThe data after deleted :\n");

  for(i=0;i

  n = fun(a, n);

  for(j = 0 ; j < n ; j++) fprintf(wf, "M", a[j]);

  fprintf(wf, "\n");

  }

  fclose(rf); fclose(wf);

  }

  参考答案:

  int fun(int a[], int n)

  {

  int i, j = 1, k = a[0] ;

  for(i = 1 ; i < n ; i++)

  if(k != a[i]) {

  a[j++]=a[i] ;

  k = a[i] ;

  }

  a[j] = 0 ;

  return j ;

  }

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