求解
代码作用是去除输入字符串中所有的'is'(不区分大小写)然后输出
代码如下
#include
#include
int main()
{
char str[1000];
int len,i=1;
gets(str);
len=strlen(str);
while(iif(str[i]!='i'&&str[i]!='I')
printf("%c",str[i]);
else if(str[i+1]=='s'||str[i+1]=='S')
i=i+1;
i++;
}
return 0;
}
运行时出现了两个问题
一:
当输入字符串出现's'时,会连同这个's'和在其之前所有连续的'i'全部删除
e.g. 输入:"iiss"
输出:"s"
(或者更夸张一点)
e.g. 输入:"ii……iiss"(中间省略n个'i')
输出:"s"
二:
将代码中的 i=i+1; 换成 i++ 后运行结果是不同的
也就是说改成了i++后无法满足题目要求
求解答
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000] = "isis";
int len, i = 0; //
gets(str);
len = strlen(str);
while (i < len)
{
if (str[i] != 'i' && str[i] != 'I')
printf("%c", str[i]);
else if (str[i + 1] == 's' || str[i + 1] == 'S')
i = i + 1;
else //
putchar(str[i]); //
i++;
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000];
int len,i=0;
gets(str);
len=strlen(str);
while(i<len)
{
if((str[i] == 'i' || str[i] == 'I') && (str[i+1] == 's' || str[i+1] == 'S'))
i+=2;
else
{
printf("%c",str[i]);
i+=1;
}
}
return 0;
}