用c++编写递归函数删除字符
时间: 2024-05-08 07:18:47 浏览: 71
在字符串中的所有指定字符。
可以参考下面的代码示例:
```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++中,你可以使用递归函数来判断一个字符串是否为回文。回文是指正读反读都一样的字符串,例如"level"、"radar"等。下面是一个简单的递归函数示例:
```cpp
#include <iostream>
#include <string>
bool isPalindrome(std::string str, int start = 0) {
// 递归的基本情况:空串或只有一个字符都是回文
if (start >= str.length() / 2)
return true;
// 比较首尾字符,如果相等则继续递归处理剩余部分,否则不是回文
if (str[start] != str[str.length() - 1])
return false;
// 继续检查下一个字符
return isPalindrome(str, start + 1);
}
int main() {
std::string input;
std::cout << "Enter a string to check for palindrome: ";
std::cin >> input;
if (isPalindrome(input))
std::cout << input << " is a palindrome.\n";
else
std::cout << input << " is not a palindrome.\n";
return 0;
}
```
在这个例子中,`isPalindrome` 函数接受一个字符串 `str` 和一个起始索引 `start`。当起始位置超过字符串长度的一半时,认为字符串是回文。然后逐个比较首尾字符,如果不匹配就返回 `false`,匹配则递归地检查剩下的部分。
如何用C++编写一个递归函数,通过实现字符串子串(SubStr)操作来检测字符x是否存在于字符串s中?
在C++中,你可以使用递归函数结合字符串查找算法来实现这个功能。这里有一个简单的示例,我们创建一个名为`containsXRecursively`的递归函数,它会检查字符串`s`的每个字符,如果遇到`x`则返回`true`,否则继续递归检查剩余部分。
```cpp
#include <iostream>
#include <string>
// 递归函数,用于检查给定的子串s是否包含字符x
bool containsXRecursively(const std::string& s, char x, int index = 0) {
// 如果子串为空或者找到了目标字符x,返回true
if (index == s.size() || s[index] == x)
return true;
// 没找到x,尝试下一个字符
return containsXRecursively(s, x, index + 1);
}
int main() {
std::string str = "Hello, World!";
char targetChar = 'o';
bool result = containsXRecursively(str, targetChar);
if (result)
std::cout << "Character " << targetChar << " is present in the string." << std::endl;
else
std::cout << "Character " << targetChar << " is not present in the string." << std::endl;
return 0;
}
```
在这个例子中,`containsXRecursively`函数接受三个参数:原始字符串`s`,目标字符`x`以及当前搜索的子串起始索引。函数首先检查当前位置的字符,然后递归地检查剩余的子串,直到找到`x`或者遍历完整个字符串。
阅读全文