用c++编写递归函数删除字符
时间: 2024-05-08 21:18:47 浏览: 73
在字符串中的所有指定字符。
可以参考下面的代码示例:
```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++中,我们可以使用递归函数来计算字符在字母表中的顺序,通常这个顺序是从'a'开始计数的,即0。下面是一个简单的例子,展示了如何编写这样一个递归函数:
```cpp
#include <iostream>
using namespace std;
int getAlphabetPosition(char ch) {
if (ch >= 'a' && ch <= 'z') { // 如果字符在小写字母范围内
return ch - 'a'; // 返回字符减去'a'的值,即字母序号
} else if (ch >= 'A' && ch <= 'Z') { // 如果字符在大写字母范围内
return ch - 'A'; // 同理,大写字母也做同样的处理
} else {
return -1; // 如果字符不是字母,则返回-1表示错误
}
}
// 递归版本,用于处理字符串中的每个字符
void recursiveAlphabetPositions(string input) {
for (char c : input) {
int pos = getAlphabetPosition(c);
cout << "Character '" << c << "' has position " << pos << endl;
}
}
int main() {
string userInput;
cout << "Enter a string of characters: ";
getline(cin, userInput);
recursiveAlphabetPositions(userInput);
return 0;
}
```
在这个程序中,`getAlphabetPosition`函数是递归的核心部分,它接受一个字符并检查其是否是字母。如果是,就返回相应的字母序号;如果不是,返回-1。`recursiveAlphabetPositions`函数则遍历整个输入字符串,并对每个字符调用`getAlphabetPosition`。
在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`,匹配则递归地检查剩下的部分。
阅读全文