2013年计算机二级C语言上机题库三十三_第3页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年5月13日
 编程题
  假定输入的字符串中只包含字母和*号。请编写函数FUN,它的功能是:使字符串中尾部的*号不得多于N个;若多于N个,则删除多余的*号;若少于或等于N个,则什么也不做,字符串中间和前面的*号不删除。
  例如,字符串中的内容为****A*BC*DEF*G*******,若N的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;若N的值为7,则字符串中的内容仍为****A*BC*DEF*G*******。N的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:
  #include <stdio.h>
  #include <conio.h>
  #include <string.h> 
  void fun(char *a , int n)
   {
   }
  main()
  {
  char s[81];
  int n;
  FILE *out;
  printf("Enter a string :\n");
  gets(s);
  printf("Enter n: ");
  scanf("%d",&n);
  fun( s,n );
  printf("The string after deleted :\n");
  puts(s);
  out=fopen("out.dat", "w");
  strcpy(s, "****A*BC*D**EF*G*********");
  fun(s, 5);
  fprintf(out, "%s", s);
  fclose(out);
  }
  答案是:
   void fun( char *a,int n)
  {
  int i=0,k=0;
  char *p,*t;
  p=t=a;
  while(*t)
  t++;
  t--;
  while(*t==’*’)
  {
  k++;
   t--;
   }
  t++;
  if(k>n)
  {
  while(*p&&p<t+n)
  {
  a[i]=*p;
  i++;
  p++;
  }
   a[i]=’\0’;
  }
  }
首页 1 2 3 尾页

相关文章