所属年份:2010.9;2011.9;
假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。
#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--; while(*t=='*')t--; fun( s , t ); printf("The string after deleted:\n");puts(s); }
【考点分析】
本题考查:删除字符串中非尾部*号,删除的主要思想就是把不删除的字符保留起来。
【解题思路】
本题用两个循环语句来实现。第1个循环的作用是将指针p所指字母以前所有非*号的字符保留下来,即删除指针p以前所有的*号。第2个循环的作用是将指针p以后的所有*号保留下来。最后在新串的结尾加上结束符。
【参考答案】
void fun( char *a, char *p ) { char *t=a; for(;t<=p;t++) if(*t!='*') *(a++)=*t; for(;*t!='\0';t++) *(a++)=*t; *a='\0'; /*在字符串最后加上字符串结束标识*/ }