当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(78)
发布时间:2011/9/30 11:33:13 来源:城市学习网 编辑:ziteng
  一.填空题:给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。

  例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结果为: 22。

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

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

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

  给定源程序:

  #include

  #include

  #include

  int fun(char *s)

  {int sum=0;

  while(*s) {

  /**********found**********/

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

  /**********found**********/

  __2__;

  }

  /**********found**********/

  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);

  }

  解题答案:

  /**********第一空**********/

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

  /**********第二空**********/

  s++;

  /**********第三空**********/

  return sum ;

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

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

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

  给定源程序:

  #include

  int fun(int k)

  {int m=0, mc=0 ;

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

  {

  /************found************/

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

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

  k--;

  }

  return m;

  /************found************/

  _____

  main ()

  {

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

  }

  解题答案:

  /************found************/

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

  /************found************/

  }

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

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

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

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

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

  你编写的若干语句。

  给定源程序:

  #include

  #include

  double fun(int n)

  {

  }

  main() /* 主函数 */

  {void NONO ();

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

  NONO();

  }

  void NONO ()

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

  FILE *fp, *wf ;

  int i, n ;

  double s;

  fp = fopen("in.dat","r");

  wf = fopen("out.dat","w");

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

  fscanf(fp, "%d", &n);

  s = fun(n);

  fprintf(wf, "%f\n", s);

  }

  fclose(fp);

  fclose(wf);

  }

  参考答案:

  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) ;

  }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved