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

 给定程序中,函数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’; 


  } 


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

就业数据资源平台