当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(75)
发布时间:2011/9/30 11:30:26 来源:城市学习网 编辑:ziteng
  一、填空题:给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文"(Palindrome),若是,函数返回值为1;不是,函数返回值为0。"回文"是正读和反读都一样的字符串(不区分大小写字母)。

  例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。

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

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

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

  给定源程序:

  #include

  #include

  #include

  int fun(char *s)

  {char *lp,*rp;

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

  lp= __1__ ;

  rp=s+strlen(s)-1;

  while((toupper(*lp)==toupper(*rp)) && (lp

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

  lp++; rp __2__ ;}

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

  if(lp

  else return 1;

  }

  main()

  {char s[81];

  printf("Enter a string: "); scanf("%s",s);

  if(fun(s)) printf("\n\"%s\" is a Palindrome.\n\n",s);

  else printf("\n\"%s\" isn't a Palindrome.\n\n",s);

  }

  解题答案:

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

  lp= s ;

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

  lp++; rp -- ;}

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

  if(lp

  ****************************************** [NextPage]   二、改错题:给定程序MODI1.C中fun函数的功能是:求出以下分数序列的前n项之和。

   2      3      5      8      13    21

  ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ……

   1      2      3       5     8      13

  和值通过函数值返回main函数。

  例如,若 n = 5,则应输出: 8.391667。

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

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

  给定源程序:

  #include

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

  fun (int n)

  {int a = 2, b = 1, c, k ;

  double s=0.0 ;

  for (k = 1; k <= n; k++)

  {s = s + 1.0 * a / b ;

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

  c = a; a += b; b += c;

  }

  return(s);

  }

  main()

  {int n = 5 ;

  printf("\nThe value of function is: %lf\n", fun (n));

  }

  解题答案:

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

  double fun(int n)

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

  c=a; a+=b; b=c;

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

 [NextPage]   三、程序题:请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17, 5,则应输出:19, 23, 29, 31, 37。函数fun中给出的语句仅供参考。

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

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

  给定源程序:

  #include

  void fun(int m, int k, int xx[])

  {

  }

  main()

  {

  int m, n, zz[1000] ;void NONO ();

  printf("\nPlease enter two integers:");

  scanf("%d %d", &m, &n);

  fun(m, n, zz);

  for(m = 0 ; m < n ; m++)

  printf("%d ", zz[m]);

  printf("\n");

  NONO();

  }

  void NONO ()

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

  int m, n, zz[1000], i ;

  FILE *rf, *wf ;

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

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

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

  fscanf(rf, "%d %d", &m, &n);

  fun(m, n, zz);

  for(m = 0 ; m < n ; m++) fprintf(wf, "%d ", zz[m]);

  fprintf(wf, "\n");

  }

  fclose(rf);

  fclose(wf);

  }

  参考答案:

  void fun(int m, int k, int xx[])

  {

  int i, j=1, t=m+1;

  while(j<=k)

  {

  /* 以下完成判断素数,并存放到数组xx中 */

  for(i = 2 ; i < t; i++)

  if(t % i==0) break;

  if(i==t) {

  xx[j-1] = i;

  j++;

  }

  t++;

  }

  }

  }

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