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

填空题。
  给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本 文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  void fun(char *s, int a, double f)
  {
  __1__ fp;
  char ch;
  fp = fopen("file1.txt", "w");
  fprintf(fp, "%s %d %f\n", s, a, f);
  fclose(fp);
  fp = fopen("file1.txt", "r");
  printf("\nThe result :\n\n");
  ch = fgetc(fp);
  while (!feof(__2__)) {
  putchar(__3__); ch = fgetc(fp); }
  putchar('\n');
  fclose(fp);
  }
  main()
  { char a[10]="Hello!"; int b=12345;
  double c= 98.76;
  fun(a,b,c);
  }
  解题思路:
  本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。
  第一处:定义文本文件类型变量,所以应填:FILE *。
  第二处:判断文件是否结束,所以应填:fp。
  第三处:显示读出的字符,所以应填:ch。
改错题
  给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。
  请改正函数fun中指定部位的错误, 使它能得出正确的结果。
  注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  void fun(char *s)
  { int i,j;
  for(i=0,j=0; s[i]!='\0'; i++)
  if(s[i]>='0' && s[i]<='9')
  s[j]=s[i];
  s[j]="\0";
  }
  main()
  { char item[80];
  printf("\nEnter a string : ");gets(item);
  printf("\n\nThe string is : \"%s\"\n",item);
  fun(item);
  printf("\n\nThe string of changing is : \"%s\"\n",item );
  }
  解题思路:
  第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j
  来控制新字符串的位置,所以应改为:s[j++]=s[i];。
  第二处: 置新字符串的结束符,所以应改为:s[j]='\0';.
编程题
  请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的
  顺序依次放到一个字符串中。
  例如, 二维数组中的数据为:
  W W W W
  S S S S  
  H H H H
  则字符串中的内容应是: WSHWSHWSH。
  注意:部分源程序在文件PROG1.C中。
  请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入
  你编写的若干语句。
  给定源程序:
  #include <stdio.h>
  #define M 3
  #define N 4
  void fun(char s[][N], char *b)
  {
  int i,j,n=0;
  for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */
  {
  }
  b[n]='\0';
  }
  main()
  { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};
  int i,j;
  printf("The matrix:\n");
  for(i=0; i<M; i++)
  { for(j=0;j<N; j++)printf("%3c",w[i][j]);
  printf("\n");
  }
  fun(w,a);
  printf("The A string:\n");puts(a);
  printf("\n\n");
  NONO();
  }
  解题思路:
  本题是把二维数组中的字符数据按列存放到一个字符串中。
  1. 计算存放到一维数组中的位置。
  2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。
  参考答案:
  void fun(char s[][N], char *b)
  {
  int i,j,n=0;
  for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */
  {
  for(j = 0 ; j < M ; j++) {
  b[n] = s[j][i] ;
  n = i * M + j + 1;
  }
  }
  b[n]='\0';
  }
就业数据资源平台