c语言 单词转换
题目描述输入一个整数K,表示有K组测试数据,接下来的K行,每行输入一个字符串,将其中的单词“how”换成“why”如果没有“how”,就输出“not found!"
输入
先输入一个数一个数,表示要测试的组数,然后依依输入要测试的字符串
输出
输出修改后的字符串,若不包含要修改的“how”,则输出“not found!””
样例输入
3
how are you!
i feel good!
how do you do
样例输出
why are you!
not found!
why do you do
以下是我写的代码,但是提交有错误,求高手给小弟解决一下;#include<stdio.h>
#include<string.h>
int main()
{
long int k,i,j,flag,t;
char s[1000];
scanf("%ld",&k);//输入数据表示测试用列
getchar();
for(i=0;i<k;i++)
{
flag=1;//标记
gets(s);//接受字符串
t=strlen(s);
if(t==3)//如果该字符串长度为3需要判断是否为how
{
if(s[0]=='h' && s[1]=='o' && s[2]=='w')
{
s[0]='w';
s[1]='h';
s[2]='y';
flag=0;//标记存在how
}
if(flag==0)
printf("%s\n",s);
else
printf("not found!\n");
}
else
{
if(s[0]=='h' && s[1]=='o' && s[2]=='w' && s[3]==' ')//在字符串长度不等于3的情况下,判断第一个单词是否为how
{
s[0]='w';
s[1]='h';
s[2]='y';
flag=0;
}
for(j=1;j<t-1;j++)//从第二个字符开始判断如果how单词的前后是空格,就将其转换成why直到倒数第二个字符
{
if(s[j-1]==' ' && s[j]=='h' && s[j+1]=='o' && s[j+2]=='w' && s[j+3]==' ')
{
s[j]='w';
s[j+1]='h';
s[j+2]='y';
flag=0;
}
}
if(s[t-4]==' ' && s[t-3]=='h' && s[t-2]=='o' && s[t-1]=='w')//判断最后四个字符是否为空格和how如果是将其转换成why
{
s[t-3]='w';
s[t-2]='h';
s[t-1]='y';
flag=0;
}
if(flag==0)
printf("%s\n",s);
else
printf("not found!\n");
}
}
return 0;
}