通过DevC++用递归函数写一个普通字符转换为回文字符的程序
时间: 2024-12-23 14:13:08 浏览: 0
程判断输入的一串字符是否为“回文”。所谓“回文”是指顺序读和逆序读都一样的字符串。如:“12321”和“abcdcba”都是回文。
在DevC++中,我们可以使用递归函数来编写一个将普通字符串转换成回文字符串的程序。首先,我们需要了解回文串是指正读反读都一样的字符串。对于单个字符来说,它本身就是回文;对于长度大于1的字符串,可以通过交换首尾字符然后递归处理剩余部分的方式来构造回文。
下面是一个简单的示例:
```cpp
#include <iostream>
#include <string>
// 递归函数,用于将非回文字符串变成回文
std::string makePalindrome(std::string str, int start = 0) {
// 如果只有一个字符或者空字符串,直接返回
if (start >= str.length() / 2)
return str;
// 交换首尾字符并继续递归处理
str[start] = std::tolower(str[start]); // 转化为小写便于比较
str[str.length() - 1 - start] = std::tolower(str[str.length() - 1 - start]);
return makePalindrome(str, start + 1);
}
int main() {
std::string input;
std::cout << "请输入一个字符串: ";
getline(std::cin, input);
std::string palindrome = makePalindrome(input);
std::cout << "转换后的回文字符串是: " << palindrome << std::endl;
return 0;
}
```
在这个程序中,`makePalindrome` 函数接受一个字符串和一个起始索引作为参数。如果起始索引超过一半长度的一半,说明已经形成了回文中心,就停止递归。否则,它会交换当前位置和结尾位置的字符,并对剩下的部分继续递归操作。
阅读全文