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

  给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去 除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回 所指变量。 

  例如,输入一个数:27638496,新的数:为739。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 


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


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


  给定源程序: 


  #include <stdio.h> 


  void fun(unsigned long *n) 


  { unsigned long x=0, i; int t; 


  i=1; 


  while(*n) 


  { t=*n % __1__; 


  if(t%2!= __2__) 


  { x=x+t*i; i=i*10; } 


  *n =*n /10; 


  } 


  *n=__3__; 


  } 


  main() 


  { unsigned long n=-1; 


  while(n>99999999||n<0) 


  { printf("Please input(0<n<100000000): "); scanf("%ld",&n); } 


  fun(&n); 


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


  } 


  解题思路: 


  第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。 


  第二处:判断是否是奇数,所以应填:0。 


  第三处:最后通形参n来返回新数x,所以应填:x。 


  给定程序MODI1.C中函数 fun 的功能是:计算n!。 


  例如,给n输入5,则输出120.000000。 


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


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


 给定源程序: 


  #include <stdio.h> 


  double fun ( int n ) 


  { double result = 1.0 ; 


  if n = = 0 


  return 1.0 ; 


  while( n >1 && n < 170 ) 


  result *= n-- 


  return result ; 


  } 


  main ( ) 


  { int n ; 


  printf("Input N:") ; 


  scanf("%d", &n) ; 


  printf("\n\n%d! =%lf\n\n", n, fun(n)) ; 


  } 


  解题思路: 


  第一处:条件语句书写格式错误,应改为:if (n==0)。 


  第二处:语句后缺少分号。 


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


  请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的。例如,若输入字符串"-1234",则函数把它转换为整数值 -1234。函数fun中给出的语句仅供参考。 


  注意: 部分源程序存在文件PROG1.C文件中。 


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


  给定源程序: 


  #include <stdio.h> 


  #include <string.h> 


  long fun ( char *p) 


  {int i, len, t; /* len为串长,t为正负标识 */ 


  long x=0; 


  len=strlen(p); 


  if(p[0]==’-’) 


  { t=-1; len--; p++; } 


  else t=1; 


  /* 以下完成数字字符串转换为一个数字 */ 


  return x*t; 


  } 


  main() /* 主函数 */ 


  { char s[6]; 


  long n; 


  printf("Enter a string:\n") ; 


  gets(s); 


  n = fun(s); 


  printf("%ld\n",n); 


  NONO ( ); 


  } 


  NONO ( ) 


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


  FILE *fp, *wf ; 


  int i ; 


  char s[20] ; 


  long n ; 


  fp = fopen("c:\\test\\in.dat","r") ; 


  wf = fopen("c:\\test\\out.dat","w") ; 


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


  fscanf(fp, "%s", s) ; 


  n = fun(s); 


  fprintf(wf, "%ld\n", n) ; 


  } 


  fclose(fp) ; 


  fclose(wf) ; 


  } 


  解题思路: 


  本题是将一个数字字符串转换为一个整数。


  参考答案: 


  #include <stdio.h> 


  #include <string.h> 


  long fun ( char *p) 


  { 


  int i, len, t; /* len为串长,t为正负标识 */ 


  long x=0; 


  len=strlen(p); 


  if(p[0]==’-’) 


  { t=-1; len--; p++; } 


  else t=1; 


  /* 以下完成数字字符串转换为一个数字 */ 


  while(*p) x = x*10-48+(*p++); 


  return x*t; 


  } 


  main() /* 主函数 */ 


  { char s[6]; 


  long n; 


  printf("Enter a string:\n") ; 


  gets(s); 


  n = fun(s); 


  printf("%ld\n",n); 


  NONO ( ); 


  } 


  NONO ( ) 


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


  FILE *fp, *wf ; 


  int i ; 


  char s[20] ; 


  long n ; 


  fp = fopen("c:\\test\\in.dat","r") ; 


  wf = fopen("c:\\test\\out.dat","w") ; 


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


  fscanf(fp, "%s", s) ; 


  n = fun(s); 


  fprintf(wf, "%ld\n", n) ; 


  } 


  fclose(fp) ; 


  fclose(wf) ; 


  } 


  注意:由于NONO( )这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO( )


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

就业数据资源平台