问答题
24分
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部。例如,字符串中的内容为:"*******A*BC*DEF*G****",移动后,字符串中的内容...
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部。
例如,字符串中的内容为:"*******A*BC*DEF*G****",移动后,字符串中的内容应当是:"A*BC*DEF*G***********"。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
例如,字符串中的内容为:"*******A*BC*DEF*G****",移动后,字符串中的内容应当是:"A*BC*DEF*G***********"。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考解析: 【参考答案】
void fun( char *a )
{
int i=0,n=0;
char *p;
p=a;
while (*p=='*') /*判断*p是否是*号,并统计*号的个数*/
{
n++;p++;
}
while(*p) /*将前导*号后的字符传递给a*/
{
a[i]=*p;i++;p++;
}
while(n!=0)
{
a[i]='*';i++;n--;
}
a[i]='\0';
}
【考点分析】
本题考查:移动字符串中指定字符的位置,一般采用while循环语句,通过指针型变量来完成。
【解题思路】
函数fun的功能:将字符串中的前导*号全部移到字符串的尾部。本题解题思路:
(1)定义一个指针并指向字符串的首地址;
(2)利用循环语句找出字符串的前导*号的个数n;
(3)利用循环语句把剩余的字符拷贝到另一个字符串中;
(4)在字符串的末尾接上n个*号。