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

 给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。 

  例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 


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


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


  给定源程序: 


  #include  


  #include  


  #include  


  #define N 9 


  long ctod( char *s ) 


  { long d=0; 


  while(*s) 


  if(isdigit( *s)) { 


  d=d*10+*s-__1__; 


  __2__; } 


  return d; 


  } 


  long fun( char *a, char *b ) 


  { 


  return __3__; 


  } 


  main() 


  { char s1[N],s2[N]; 


  do 


  { printf("Input string s1 : "); gets(s1); } 


  while( strlen(s1)>N ); 


  do 


  { printf("Input string s2 : "); gets(s2); } 


  while( strlen(s2)>N ); 


  printf("The result is: %ld\n", fun(s1,s2) ); 


  }



  解题思路: 


  第一处:数字字符与其对应的数值相差48,所以应填:48。 


  第二处:到字符串下一个位置,所以应填:s++。 


  第三处:返回两个数字字符串经转换成数值的和,所以应填:ctod(a)+ctod(b)。 


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


  给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。 


  例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果: 


  upper = 6, lower = 8。 


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


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


  给定源程序: 


  #include  


  void fun ( char *s, int a, int b ) 


  { 


  while ( *s ) 


  { if ( *s >= ’A’ && *s <= ’Z’ ) 


  *a=a+1 ; 


  if ( *s >= ’a’ && *s <= ’z’ ) 


  *b=b+1; 


  s++; 


  } 


  } 


  main( ) 


  { char s[100]; int upper = 0, lower = 0 ; 


  printf( "\nPlease a string : " ); gets ( s ); 


  fun ( s, & upper, &lower ); 


  printf( "\n upper = %d lower = %d\n", upper, lower ); 


  }


 解题思路: 


  第一处:在等式右边应写*a。 


  第二处:在等式右边应写*b。 


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


  请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入 (规定实型数为正数)。 


  例如:实型数为 1234.567, 则函数返回 1234.570000; 


  实型数为 1234.564, 则函数返回 1234.560000。 


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


  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 


  你编写的若干语句。 


  给定源程序: 


  #include  


  float fun ( float h ) 


  { 


  } 


  main( ) 


  { float a; 


  printf ("Enter a: "); scanf ( "%f", &a ); 


  printf ( "The original data is : " ); 


  printf ( "%f \n\n", a ); 


  printf ( "The result : %f\n", fun ( a ) ); 


  NONO( ); 


  } 


  解题思路: 


  本题主要是考察考生保留小数点后两位数并对第三位进行四舍五入。方法是先把这个数乘以100,然后再加0.5(实现四舍五入),再把这个数存放到一个长整型变量中,目的是把小数点后的小数去除,最后把这个数转换成浮点型数除以100,即可得出所的结果。 


  参考答案: 


  float fun ( float h ) 


  { 


  long w ; 


  w = h * 100 + 0.5 ; 


  return (float) w / 100 ; 


  } 


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

就业数据资源平台