P043 只保留字符串前导和尾部的*号 ★★★

03-程序设计题 软件121, 唐鼎威 1141浏览

所属年份:2011.9
规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:除了字符串前导和尾部的*号外,将串中其它的*号全部删除。形参h已指向字符串中第一个字母,形参p指向字符串的中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。

#include <stdio.h>
void  fun( char *a, char *h,char *p )
{


}

main()
{  char  s[81],*t, *f;
   printf("Enter a string:\n");gets(s);
   t=f=s;
   while(*t)t++;
   t--;
   while(*t=='*')t--;
   while(*f=='*')f++;
   fun( s , f,t );
   printf("The string after deleted:\n");puts(s);
}

【考点分析】
本题考查:while循环语句,注意循环条件的设定;指针型变量。
【解题思路】
本题的重点是要选择好判断条件,首先是需要判断前导*的结束,然后判断是否指向最后一个字母,最后补充尾部*,只要思路对了就可正确解答。

【参考答案】

void  fun( char *a, char *h,char *p )

{  int i=0; 
    char *q=a;
    while(q<h)
    { a[i]=*q; q++;i++;} 
       while(q<p)
       {  if(*q!='*') 
           {   a[i]=*q; 
                i++;
           } 
           q++;
        } 
        while(*q) 
         {   a[i]=*q; i++; q++;} 
        a[i]='\0';
}