#include
#include
using namespace std;
int main()
{
char str1[20]={"hello word"};
char str2[10]={"hi boy"};
int i=0,j=0;
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
while((str1[i]!='\0')&&(str2[j]!='\0'))
if(str1[i]==str2[j])
str1[i]=' ';
}
}
for(i=0;i<20;i++)
cout<<str1[i]<<endl;
return 0;
}
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
while((str1[i]!='\0')&&(str2[j]!='\0'))
if(str1[i]==str2[j])
str1[i]=' ';
}
}
while循环是不是有问题?还有我没有听懂你的问题是什么?
删除第一个串中与第二个串相同的字母
我也觉得循环有问题不知道应该怎么改
每次从第二个中取一个字符,和第一个遍历比较一下, 一样就删了,在读下一个字符,到读完第二个字符串结束,这是可以完全删除干净,但效率比较低的方法
可能是头文件错了#include
#include
#include
首次答题
#include
using namespace std;
int main()
{
char str1[20]={"hello word"};
char str2[10]={"hi boy"};
int i,j;
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
while((str1[i]!='\0')&&(str2[j]!='\0'))
{
if(str1[i]==str2[j])
{
str1[i]=' ';
break;
}
else
{
str1[i]=str1[i];
break;
}
}
}
}
for(i=0;i<20;i++)
cout<<str1[i]<<endl;
return 0;
你的while循环没有设置跳出的条件,所以就死循环在while里面了
while 语句多余的吧?
把while语句去掉,改成
if(str1[i]==str2[j]){
str1[i]="";
break;
}
在这里由于对于不是数组尾部的i和j,while语句会陷入死循环。