用c++编写递归函数删除字符
时间: 2024-05-08 07:18:47 浏览: 13
在字符串中的所有指定字符。
可以参考下面的代码示例:
```c
#include <stdio.h>
#include <string.h>
void delete_char(char *str, char ch) {
// 判断字符串是否为空
if (*str == '\0') {
return;
}
// 如果当前字符是指定字符,则删除
if (*str == ch) {
// 将后面的字符依次左移
char *p = str;
while (*p != '\0') {
*p = *(p+1);
p++;
}
// 递归调用删除下一个字符
delete_char(str, ch);
} else {
// 继续递归到下一个字符
delete_char(str+1, ch);
}
}
int main() {
char str[100], ch;
printf("请输入字符串:");
gets(str);
printf("请输入要删除的字符:");
scanf("%c", &ch);
delete_char(str, ch);
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
相关问题
C++用递归逆置字符串
可以递归函数来逆置一个字符串,具体实现如下:
```c++
#include <iostream>
#include <string>
using namespace std;
void reverse(string& s, int left, int right) {
if (left >= right) {
return;
}
// 交换左右两边的字符
swap(s[left], s[right]);
// 递归处理中间的字符
reverse(s, left + 1, right - 1);
}
int main() {
string s = "Hello, world!";
reverse(s, 0, s.size() - 1);
cout << s << endl;
return 0;
}
```
在递归函数`reverse()`中,我们比较左右两端的下标,如果左下标大于等于右下标,说明已经逆置完成,直接返回。否则,我们将左右两个字符交换,并递归处理中间的字符。最终,整个字符串就被逆置了。
字符串反转递归函数C++
以下是一个使用递归方式实现字符串反转的 C++ 函数:
```cpp
#include <iostream>
#include <string>
using namespace std;
string reverseString(string str) {
// 基本情况:如果字符串为空或长度为1,则直接返回原字符串
if (str.length() == 0 || str.length() == 1) {
return str;
}
// 递归情况:取出字符串中的第一个字符,将剩余字符串递归反转后与第一个字符拼接
char firstChar = str[0];
string restStr = str.substr(1);
string reversedStr = reverseString(restStr) + firstChar;
return reversedStr;
}
int main() {
string str = "hello world";
string reversedStr = reverseString(str);
cout << "Original string: " << str << endl;
cout << "Reversed string: " << reversedStr << endl;
return 0;
}
```
该函数使用递归方式实现字符串反转,每次递归都取出字符串中的第一个字符,然后将剩余字符串递归反转后与第一个字符拼接,最终得到反转后的字符串。函数的基本情况是如果字符串为空或长度为1,则直接返回原字符串。