题目:
设计一函数void deletechar(char *str1, const char *str2),在str1中删除str2中出现的字符。用递归和非递归两种方法实现。
代码:
1.非递归:
#include <iostream>
using namespace std;
void deletechar(char *str1, const char *str2);
int main()
{
char s1[] = "aefghijorstz", s2[] = "acefhuwxz"; //字符串内容可更改
deletechar(s1, s2);
system("pause");
return 0;
}
void deletechar(char *str1, const char *str2)
{
unsigned int i, j;
cout << "字符串str1为:";
for (i = 0; i < strlen(str1); ++i)
{
cout << str1[i] << " ";
}
cout << endl << "字符串str2为:";
for (j = 0; j < strlen(str2); ++j)
{
cout << str2[j] << " ";
}
cout << endl;
for (i = 0; i < strlen(str1); ++i)
{
for (j = 0; j < strlen(str2); ++j)
{
if (str1[i] == str2[j])
{
str1[i]='0';
break;
}
}
}
cout << "在str1中删除str2中出现的字符后,str1为:";
for (i = 0; i < strlen(str1); ++i)
{
if (str1[i]!='0') cout << str1[i] << " ";
}
cout << endl << endl;
}
2.递归:
好像递归不但没简化,反而更复杂了……