就业数据资源平台
当前位置:首页 > C语言程序设计
计算机等级考试二级C语言试题及答案8

给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本
  文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将
  字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
  请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  #include <stdlib.h>
  void fun(char *s, int a, double f)
  {
  __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);
  __2__ ;
  fp = fopen("file1.txt", "r");
  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 *。
  第二处:关闭刚写入的文件,所以应填:fclose(fp)。
  第三处:从文件中读出数据,所以应填:fp。
给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。
  请改正函数fun中指定部位的错误, 使它能得出正确的结果。
  注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  #include <alloc.h>
  #include <string.h>
  #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;
  t=(STU *)calloc(sizeof(STU),m)
  for(i=0; i<N; i++) b[i]=a[i];
  for(k=0; k<m; k++)
  { for(i=j=0; i<N; i++)
  if(b[i].s > b[j].s) j=i;
  t(k)=b(j);
  b[j].s=0;
  }
  return t;
  }
  outresult(STU a[], FILE *pf)
  { int i;
  for(i=0; i<N; 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<m; i++)
  printf(" %s %d\n",pOrder[i].num , pOrder[i].s);
  free(pOrder);
  }
  解题思路:
  第一处: 语句最后缺少分号。
  第二处: 应该使用方括号,而不是圆括号。
  像此类,使用编译,即可发现。
就业数据资源平台