随机输入2个字符串str1,str2,将str1中与str2中相同的字符删除,并将删除后str1输出。

例如:str1:"asdjhfjhasdtruyirasd" str2:"asd"
输出结果:“jhfjhtruyir”

注意:用循环结构,不要用函数写(可以用strcmp,strcpy)!

第1个回答  2012-08-04
#include <stdio.h>
int main(void)
{
char str1[]="asdjhfjhasdtruyirasd",str2[]="asd";
int i,j,k;
for(i=0;str2[i];i++)
for(j=0;str1[j];j++)
if (str1[j]==str2[i])
{
k=j;
while(str1[k+1])
str1[k]=str1[k+1],k++;
str1[k]='\0';
}
printf("%s \n %s \n",str1,str2);
return 0;
}
第2个回答  2012-08-04
/////////////////////////////////////////
// C-Free 4.1
// MinGW 3.4.5
// veket的小号
// 运行通过
/////////////////////////////////////////
#include <stdio.h>
int main()
{
char str1[100];
char str2[100];
int i;
int j;
int k;
printf("输入str1:\n");
gets(str1);
printf("输入str2:\n");
gets(str2);
for(i=0;str2[i]!='\0';i++)
{
for(j=0;str1[j]!='\0';j++)
{
for(;str2[i]==str1[j];)
{
for(k=j;str1[k]!='\0';k++)
{
str1[k] = str1[k+1];
}
}
}
}
printf("输出结果:\n%s\n", str1);
return 0;
}追问

额 for循环这么多的嵌套啊!能用strcpy与strcmp减少点嵌套吗?

追答

可以呀(不用库函数 才显得学的好 )
/*既然只是比较字符,那么strcmp就用不上了*/
/////////////////////////////////////////
// C-Free 4.1
// MinGW 3.4.5
// veket的小号
// 运行通过
/////////////////////////////////////////
#include
#include
int main()
{
char str1[100];
char str2[100];
char tmp[100];
int i;
int j;
int k;
printf("输入str1:\n");
gets(str1);
printf("输入str2:\n");
gets(str2);
for(i=0;str2[i]!='\0';i++)
{
for(j=0;str1[j]!='\0';j++)
{
for(;str2[i]==str1[j];)
{
strcpy(tmp, str1+j+1);
strcpy(str1+j, tmp);
}
}
}
printf("输出结果:\n%s\n", str1);
return 0;
}

本回答被提问者和网友采纳
相似回答