当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(22)
发布时间:2011/7/8 11:33:14 来源:城市学习网 编辑:ziteng
  第22套
  填空题
  给定给定程序中,函数FUN的功能是:在形参S所指字符串中的每个数字字符之后插入一个*号。
  例如,形参S所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5adh3*kjsdf7*。
  注意:部分源程序给出如下
  请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
  试题程序:#include
  void fun(char  *s)
  {
  int  i, j, n;
  for (i=0; s[i]!='\0'; i++)
  if (s[i]>='0' ___1___ s[i]<='9')
  {
  n = 0;
  while (s[i+1+n] != ___2___)
  n++;
  for (j=i+n+1; j>i; j--)
  s[j+1] = ___3___;
  s[j+1] = '*';
  i = i+1;
  }
  }
  main()
  {
  char  s[80] = "ba3a54cd23a";
  printf("\nThe original string is :  %s\n", s);
  fun(s);
  printf("\nThe result is :  %s\n", s);
  }
  第1处填空:&&
  第2处填空:0
  第3处填空:s[j]或*(s+j) [NextPage]  改错题
  下列给定程序中,函数FUN的功能是:根据整型形参M,计算如下公式的值,
  例如,若M中的值为5,则应输出:1.463611。
  请改正程序中的错误,使它能得出正确结果。
  注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
  试题程序:#include
  #include
  double fun(int  m)
  {
  double  y = 1.0;
  int  i;
  /********found********/
  for (i=2; i       /********found********/
  y += 1/(i*i);
  return (y);
  }
  main()
  {
  int  n = 5;
  printf("\nThe result is \n", fun(n));
  }
  第1处:for (i=2;i第2处:y+=1/(i*i);应改为y+=1.0/(i*i);
  [NextPage]   编程题
  N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点,请编写函数fun,它的功能是找出学生的最高分,由函数返回。
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:#include
  #include
  #define  N  8
  struct  slist
  {
  double  s;
  struct slist *next;
  };
  typedef  struct slist  STREC;
  double  fun( STREC *h )
  {
  }
  STREC *creat( double *s)
  {
  STREC *h,*p,*q;
  int  i=0;
  h=p=(STREC*)malloc(sizeof(STREC));
  p->s=0;
  while(i    {
  q=(STREC*)malloc(sizeof(STREC));
  q->s=s[i];
  i++;
  p->next=q;
  p=q;
  }
  p->next=0;
  return  h;
  }
  outlist(STREC *h)
  {
  STREC  *p;
  p=h->next;
  printf("head");
  do
  {
  printf("->%2.0f",p->s);
  p=p->next;
  }
  while(p!=0);
  printf("\n\n");
  }
  main()
  {
  double  s[N]={85,76,69,85,91,72,64,87}, max;
  STREC  *h;
  FILE *out;
  h=creat(s);
  outlist(h);
  max=fun(h);
  printf("max=%6.1f\n",max);
  out=fopen("out.dat", "w");
  fprintf(out, "max=%6.1f",max);
  fclose(out);
  }
  答案是:
  double fun(STREC *h)
  {
  double max;
  STREC *q=h;
  max=h->s;
  do
  {
  if(q->s>max)
  max=q->s;
  q=q->next;
  }
  while(q!=0);
  return max;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved