就业数据资源平台
当前位置:首页 > C语言程序设计
2014年计算机二级C语言上机模拟试题54

  给定程序的功能是:从键盘输入若干行文本(每行不超过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); 


  } 


  void WriteText(FILE ___1___) 


  { char str[81]; 


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


  gets(str); 


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


  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) ) { 


  printf("%s",___3___); 


  fgets(str,81,fr); 


  } 


  }


  解题思路: 


  本题要求是把键盘上输入的内容写到指定的文件中。程序中共有三处要填上适当的内容, 使程序能运行出正确的结果。 


  第一处:要求填写文件流的自变量名,在这个函数中,已有的语句fputs("\n",fw);分析可知:由于文件流变量fw在函数体没有定义过,所以本处应填*fw或fw[]。 


  第二处:通过while循环语句,把键盘上输入的内容,要写入到指定的文件中,键盘上输入的内容已存入字符串str变量中,因此,本处应填写str。 


  第三处:要把已存入文件中的内容,再从文件中读出且已存入字符串变量str中,最后在屏幕显示出来,因此,此处应填写str。 


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


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


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


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


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


  给定源程序: 


  #include  


  void fun (long s, long t) 


  { long sl=10; 


  *t = s % 10; 


  while ( s > 0) 


  { s = s/100; 


  *t = s * sl + *t; 


   sl = sl*100; 


  } 


  } 


  main() 


  { long s, t; 


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


  fun(s, &t); 


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


  }


  解题思路: 


  第一处:在函数fun中使用了*t,但在函数定义时没有使用*t,所以应改为:void fun(long s,long *t)。 


  第二处:每循环一次,sl的值就乘以10,所以应改为: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; 


  printf("Input a, b:"); 


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


  fun(a, b, &c); 


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


  NONO(); 


  } 


  解题思路: 


  本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。 


  取a十位数字的方法:a/10 


  取a个位数字的方法:a 


  参考答案: 


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


  { 


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


  } 


  ※※※※※※※※※※※※※※※※※※※※※※※※※

就业数据资源平台