功能:编写函数void fun(char *str,char ch)从字符串str中删除指定的字符ch。 要求:本问题要求用两种算法分别实现,一是直接删除算法即查找符合删除条件的并逐次前移实现;二是间接删除算法即查找不符合删除条件的并保留下来,而保留的方法可以采用利用本数组和引入临时数组两种实现。 说明:该字符可能多次和连续出现,算法应全面考虑。要求有主函数。
时间: 2024-02-19 09:03:00 浏览: 105
直接删除算法:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char *str, char ch) {
int len = strlen(str);
int i = 0, j = 0;
while (i < len) {
if (str[i] != ch) {
str[j++] = str[i];
}
i++;
}
str[j] = '\0';
}
int main() {
char str[100];
char ch;
cout << "请输入字符串:";
cin >> str;
cout << "请输入要删除的字符:";
cin >> ch;
fun(str, ch);
cout << "删除后的字符串为:" << str << endl;
return 0;
}
```
间接删除算法(利用本数组):
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char *str, char ch) {
int len = strlen(str);
int i = 0, j = 0;
while (i < len) {
if (str[i] != ch) {
str[j++] = str[i];
}
i++;
}
str[j] = '\0';
}
int main() {
char str[100];
char ch;
cout << "请输入字符串:";
cin >> str;
cout << "请输入要删除的字符:";
cin >> ch;
int len = strlen(str);
int i = 0, j = 0;
while (i < len) {
if (str[i] != ch) {
str[j++] = str[i];
}
i++;
}
str[j] = '\0';
cout << "删除后的字符串为:" << str << endl;
return 0;
}
```
间接删除算法(引入临时数组):
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char *str, char ch) {
int len = strlen(str);
char temp[100];
int i = 0, j = 0;
while (i < len) {
if (str[i] != ch) {
temp[j++] = str[i];
}
i++;
}
temp[j] = '\0';
strcpy(str, temp);
}
int main() {
char str[100];
char ch;
cout << "请输入字符串:";
cin >> str;
cout << "请输入要删除的字符:";
cin >> ch;
fun(str, ch);
cout << "删除后的字符串为:" << str << endl;
return 0;
}
```
阅读全文