当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(96)
发布时间:2011/10/1 9:54:33 来源:城市学习网 编辑:ziteng
  一、填空题:给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正 确时, 程序输出:x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000

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

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

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

  给定源程序:

  #include

  double f1(double x)

  {return x*x;}

  double f2(double x, double y)

  {return x*y;}

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

  __1__ fun(int i, double x, double y)

  {if (i==1)

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

  return __2__(x);

  else

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

  return __3__(x, y);

  }

  main()

  {double x1=5, x2=3, r;

  r = fun(1, x1, x2);

  r += fun(2, x1, x2);

  printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);

  }

  解题答案:

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

  double fun(int i, double x, double y)

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

  return f1(x);

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

  return f2(x, y);

  ****************************************** [NextPage]   二.改错题:给定程序MODI1.C中函数fun的功能是: 比较两个字符串,将长的那个字符串的首地址作为函数值返回。

  请改正函数fun中指定部位的错误, 使它能得出正确的结果。

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

  给定源程序:

  #include

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

  char fun(char *s, char *t)

  {int sl=0,tl=0; char *ss, *tt;

  ss=s; tt=t;

  while(*ss)

  {sl++;

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

  (*ss)++;

  }

  while(*tt)

  {tl++;

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

  (*tt)++;

  }

  if(tl>sl) return t;

  else return s;

  }

  main()

  {char a[80],b[80];

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

  printf("\nEnter a string again : "); gets(b);

  printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b));

  }

  解题答案:

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

  char *fun(char *s,char *t)

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

  ss++;

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

  tt++;

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

 [NextPage]   三、程序题:请编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第1到第m个字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。

  例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。

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

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

  给定源程序:

  #include

  #include

  #define N 80

  void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */

  {

  int i; char t;

  t=w[0];

  for(i=0;i<(int)strlen(w)-1;i++)

  w[i]=w[i+1];

  w[strlen(w)-1]=t;

  }

  void fun(char *w, int m) /* 可调用fun1函数左移字符 */

  {

  }

  main()

  {char a[N]= "ABCDEFGHIJK";

  int m;void NONO ();

  printf("The original string:\n");puts(a);

  printf("\n\nEnter m: ");scanf("%d",&m);

  fun(a,m);

  printf("\nThe string after moving:\n");puts(a);

  printf("\n\n");

  NONO();

  }

  void NONO ()

  {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */

  FILE *rf, *wf ; char a[N] ; int m, i ;

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

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

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

  fscanf(rf, "%d %s", &m, a);

  fun(a, m);

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

  }

  fclose(rf); fclose(wf);

  }

  参考答案:

  void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */

  {

  int i; char t;

  t=w[0];

  for(i=0;i

  w[i]=w[i+1];

  w[strlen(w)-1]=t;

  }

  void fun(char *w, int m) /* 可调用fun1函数左移字符 */

  {

  int i;

  for(i = 0 ; i < m ; i++) fun1(w);

  }

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