假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为****A*BC*DE

admin2010-09-14  19

问题 假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。  
   例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
    #include<conio. h>
   #include<stdio. h>
   void fun(char *a, char *p)
  {

  }
   main ( )
     char s[81],*t;
     printf ("Enter a string: \n ");
     gets (s);
     t=s;
     while (*t)
        t++;
     t--;         /*指针t指向字符串尾部* /
     while (*t== ’*’ )
     t--;  /*指针t指向最后一个字母*/
     fun (s, t);
     printf ("The string after deleted: \n");
     puts (s);
     }

选项

答案void fun(char *a, char *p) { char *t=a; for (; t<=p; t++) if(*t!=’*’) * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!=’\0’ ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a=’\0’; / *在字符串最后加上结束标记位*/

解析 本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。
转载请注明原文地址:https://jikaoti.com/ti/jKkiFFFM
0

最新回复(0)