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

  给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。 

  例如,输入一个整数:27638496,函数返回值为:64862。 


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


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


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


  给定源程序: 


  #include  


  unsigned long fun(unsigned long n) 


  { unsigned long x=0; int t; 


  while(n) 


  { t=n; 


  if(t%2==__1__) 


  x=__2__+t; 


  n=__3__; 


  } 


  return x; 


  } 


  main() 


  { unsigned long n=-1; 


  while(n>99999999||n<0) 


  { printf("Please input(0  printf("\nThe result is: %ld\n",fun(n)); 


  }


  解题思路: 


  第一处:判断t是否是偶数,所以应填:0。 


  第二处:每操作一次,x必须乘以10,再加t,所以应填:10*x。 


  第三处:每循环一次n的值缩小10倍,所以应填:n/10。 


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


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


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


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


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


  给定源程序: 


  #include  


  void fun (long s, long *t) 


  { int d; 


  long sl=1; 


  t = 0; 


  while ( s > 0) 


  { d = s; 


  if (d%2 == 0) 


  { *t = d * sl + *t; 


   sl *= 10; 


  } 


  s /= 10; 


  } 


  } 


  main() 


  { long s, t; 


  clrscr(); 


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


  fun(s, &t); 


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


  }


 解题思路: 


  第一处:由于t是一个指针变量,赋初值的方式应为:*t=0;。 


  第二处:d%2条件判断时应为不是0,所以应改为:if(d%2!=0)。 


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


  编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 


  例如,分别输入下面两个字符串: 


  FirstString-- SecondString 


  程序输出: 


  FirstString--SecondString 


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


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


  给定源程序: 


  #include  


  void fun(char p1[], char p2[]) 


  { 


  } 


  main() 


  { char s1[80], s2[40] ; 


  printf("Enter s1 and s2:\n") ; 


  scanf("%s%s", s1, s2) ; 


  printf("s1=%s\n", s1) ; 


  printf("s2=%s\n", s2) ; 


  printf("Invoke fun(s1,s2):\n") ; 


  fun(s1, s2) ; 


  printf("After invoking:\n") ; 


  printf("%s\n", s1) ; 


  NONO() ; 


  } 


  解题思路: 


  本题是不使用字符串库函数来实现两个字符串的连接。 


  参考答案: 


  void fun(char p1[], char p2[]) 


  { 


  char *p=p1; 


  while(*p)p++; 


  while(*p2) *p++=*p2++; 


  *p=0; 


  } 


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

就业数据资源平台