2.字元串處理
這類題的機率較大,是以一定要引起注意, 這類題并不難但要細心.除去下例外還有内容置逆.
例6. 假定輸入的字元串中之含有字母和*号。請編制一函數fun(),其功能是:将字元串第一個字母前的所有*号移動到字元串後面
例如: 原字元串:******A*BC*DEF*G****
處理後的串:A*BC*DEF*G**********
注意:部分源程式已給出。
請勿改動主函數main()的内容。
試題程式:
#include <conio.h>
#include <stdio.h>
void fun(char *a)
{
}
main()
{
char s[81],*p;
int n=0;
clrscr();
printf("/n/nInput a String s:");
gets(s);
fun(s);
printf("/n/nThe String after moving:");puts(s);
}
本題難點:究竟内部是如何在移動呢?
起初:
。。。。。。 第一次移動:
可以重複四次,就行了 也可以用以下方法 起初:
|
:
void fun(char *a)
{
int i=0,n=0,j=0;
while(a[i]=='*')
{
i++;
n++;
}
while(a[j]!='/0')
{
j++;
}
for(i=0;i<j-n;i++)
{
printf("%c",a[n+i]);
a[i]=a[n+i];
}
for(i=j-n;i<=j;i++)
{
a[i]='*';
}
a[j]='/0';
}