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

 给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对 应的数值,计算出这些数值的累加和作为函数值返回。 

  例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 


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


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


  给定源程序: 


  #include  


  #include  


  #include  


  int fun(char *s) 


  { int sum=0; 


  while(*s) { 


  if( isdigit(*s) ) sum+= *s- __1__ ; 


  __2__; 


  } 


  return __3__ ; 


  } 


  main() 


  { char s[81]; int n; 


  printf("\nEnter a string:\n\n"); gets(s); 


  n=fun(s); 


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


  }


  解题思路: 


  本题是把字符串中是数字字符转换成对应的数值并进行累加。 


  第一处:’0’字符对应的ASCII值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填:48。 


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


  第三处:返回累加和sum,所以应填:sum。 


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


  给定程序MODI1.C中函数fun的功能是:计算小于形参k的最大的10个能被13或 17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。 


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


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


  给定源程序: 


  #include  


  int fun( int k ) 


  { int m=0, mc=0, j ; 


  while ((k >= 2) && (mc < 10)) 


  { 


  if ((k = 0) || (k = 0)) 


  { m = m+ k; mc++; } 


  k--; 


  } 


  return m; 


  ____ 


  main ( ) 


  { 


  printf("%d\n", fun (500)); 


  } 


 解题思路: 


  第一处:判断相等的条件是==,而不是=,所以只能在比较处再添加一个=。 


  第二处:经过编译可知,"{"和"}"没有配对,所以在横线处加上"}"。 


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


  编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。 


  例如若n为1000时,程序输出应为:s = 153.909064。 


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


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


  给定源程序: 


  #include  


  #include  


  double fun( int n) 


  { 


  } 


  main() /* 主函数 */ 


  { 


  printf("s =%f\n", fun ( 1000) ); 


  NONO(); 


  } 


  解题思路: 


  本题是求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。 


  参考答案: 


  double fun( int n) 


  { 


  double sum=0.0; 


  int i; 


  for(i=21; i<=n; i++) 


  if((i % 3==0) && (i % 7==0)) sum+=i; 


  return sqrt(sum) ; 


  } 


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

就业数据资源平台