就业数据资源平台
当前位置:首页 > C语言程序设计
2011年计算机等级考试二级C语言上机题库(2)

  一、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到 文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。

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


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


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


  给定源程序:


  #include


  #include


  #include


  void WriteText(FILE *);


  void ReadText(FILE *);


  main()


  {FILE *fp;


  if((fp=fopen("myfile4.txt","w"))==NULL)


  {printf(" open fail!!\n"); exit(0);}


  WriteText(fp);


  fclose(fp);


  if((fp=fopen("myfile4.txt","r"))==NULL)


  {printf(" open fail!!\n"); exit(0);}


  ReadText(fp);


  fclose(fp);


  }


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


  void WriteText(FILE ___1___)


  {char str[81];


  printf("\nEnter string with -1 to end :\n");


  gets(str);


  while(strcmp(str,"-1")!=0) {


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


  fputs(___2___,fw); fputs("\n",fw);


  gets(str);


  }


  }


  void ReadText(FILE *fr)


  {char str[81];


  printf("\nRead file and output to screen :\n");


  fgets(str,81,fr);


  while(!feof(fr)) {


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


  printf("%s",___3___);


  fgets(str,81,fr);


  }


  }


  解题答案:


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


  void WriteText(FILE *fw)


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


  fputs(str,fw); fputs("\n",fw);


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


  printf("%s",str);


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


  


 二、改错题:给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位 上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。


  例如,当s中的数为:7654321时,t中的数为:7531。


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


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


  给定源程序:


  #include


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


  void fun (long s, long t)


  {long sl=10;


  *t = s % 10;


  while (s > 0)


  {s = s/100;


  *t = s%10 * sl + *t;


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


  sl = sl*100;


  }


  }


  main()


  {long s, t;


  printf("\nPlease enter s:"); scanf("%ld", &s);


  fun(s, &t);


  printf("The result is: %ld\n", t);


  }


  解题答案:


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


  void fun (long s, long *t)


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


  sl=sl*10;


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


 三、程序题:函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上, b数的十位 和个位数依次放在c数的千位和十位上。


  例如,当a=45,b=12时,调用该函数后,c=1524。


  注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。


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


  给定源程序:


  #include


  void fun(int a, int b, long *c)


  {


  }


  main()


  {int a,b; long c;


  void NONO ();


  printf("Input a, b:");


  scanf("%d,%d", &a, &b);


  fun(a, b, &c);


  printf("The result is: %ld\n", c);


  NONO();


  }


  void NONO ()


  {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */


  FILE *rf, *wf ;


  int i, a,b ; long c ;


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


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


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


  fscanf(rf, "%d,%d", &a, &b);


  fun(a, b, &c);


  fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c);


  }


  fclose(rf);


  fclose(wf);


  }


  解题答案:


  {


  *c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);


  }

就业数据资源平台