用c语言编写程序,功能:编写函数void fun(char *str,char ch)从字符串str中删除指定的字符ch。 要求:本问题要求用两种算法分别实现,一是直接删除算法即查找符合删除条件的并逐次前移实现;二是间接删除算法即查找不符合删除条件的并保留下来,而保留的方法可以采用利用本数组和引入临时数组两种实现。 说明:该字符可能多次和连续出现,算法应全面考虑。
时间: 2024-02-13 07:07:35 浏览: 64
好的,以下是两种实现方法的代码:
直接删除算法:
```c
void fun(char *str, char ch) {
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != ch) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
```
间接删除算法(利用本数组):
```c
void fun(char *str, char ch) {
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != ch) {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
}
```
间接删除算法(引入临时数组):
```c
void fun(char *str, char ch) {
int i, j;
char temp[MAX_SIZE];
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != ch) {
temp[j] = str[i];
j++;
}
}
temp[j] = '\0';
strcpy(str, temp);
}
```
其中,MAX_SIZE 是定义在头文件中的一个常量,表示临时数组的最大长度。
阅读全文