单词替换(C)
单词替换
http://www.nowcoder.com/questionTerminal/5b58a04679d5419caf62c2b238e5c9c7
是不是可以有一种不替换的方法,一个一个字符的输出,遇到a则输出b,遇到非a则正常输出
#include<stdio.h>
#include<string.h>
int main()
{
char str[200];
char a[105];
char b[105];
int i,index;
int flag = 1; // flag=1表示到达一个单词的起始位置,flag=0则直接跳过
gets(str);
gets(a);
gets(b);
for(i = 0;;)
{
if(str[i] == ' ')
{
flag = 1; //下一次将是单词开始
printf("%c",str[i]);
i++;
continue;
}
else if(str[i]!= ' ' && flag) // 到达单词开始
{
flag = 0;
if(!strncmp(&str[i],a,strlen(a)) && str[i+(int)strlen(a)] == ' ') // 恰是要替换的单词(非前缀)
{
for(int j = 0;j<strlen(b);j++) //直接输出b
printf("%c",b[j]);
i = i+strlen(a);// 让下标跳到下一个单词位置
}
else // 不是要替换的单词则直接输出该单词
{
for(int j = i;;)
{
if(str[j] == '\0')
{
i = j;
break;
}
else if(str[j] == ' ')
{
i = j+1;
printf("%c",str[j]);
flag = 1;
break;
}
else
printf("%c",str[j++]);
}
}
}
else if(str[i] == '\0') // 到达句子结尾
break;
else
;
}
printf("\n");
return 0;
}
查看9道真题和解析