P004 删除字符串中所有的*号 ★

03-程序设计题 飞快学 1244浏览

所属年份:2010.9;2011.9;
规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG。

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


}

main()
{
    char  s[81];
    printf("Enter a string:\n");
    gets(s);
    fun( s );
    printf("The string after deleted:\n");
    puts(s);
}

【考点分析】
要删除字符串中所有*号需要用循环语句遍历字符串,用判断语句判断字符是否为*号,由此可以决定该程序应使用循环判断结构。

【解题思路】
用循环操作从字符串的开始往后逐个进行比较,若不是要删除的字符(用if(a[i]!=′*′)来控制)则保留。变量i和j用来表示原字符串的下标和删除*号后新字符串的下标。注意下标变量j要从0开始,最后还要加上字符串结束标识′\0′。

【参考答案】

void  fun( char *a )
{
   int i,j=0;
   for(i=0; a[i]!='\0'; i++)
     if(a[i]!='*') 
        a[j++]=a[i];    /*若不是要删除的字符'*'则留下*/
   a[j]='\0';
}