编写一个如下声明的递归函数,使得字符串Str倒序,并在主程序中调用该函数测试效果 函数声明:void Reverse(string & Str); 输入格式 输入为连续多行的多个字符串,一个字符串一行,每个字符串由阿拉伯数字、字母或特殊字符组成,字符串中不包括空格。 输出格式 输出为输入倒序后的字符串,一行输出一个字符串,对应于一行输入字符串的倒序字符串。
时间: 2023-12-10 16:38:31 浏览: 88
以下是实现该函数的代码:
```
#include <iostream>
#include <string>
using namespace std;
void Reverse(string & Str) {
if (Str.length() <= 1) { // 若字符串为空或只有一个字符,则无需反转
return;
}
char temp = Str[0]; // 将字符串首尾字符交换
Str[0] = Str[Str.length() - 1];
Str[Str.length() - 1] = temp;
string subStr = Str.substr(1, Str.length() - 2); // 取出除去首尾字符的子串
Reverse(subStr); // 对子串进行递归操作
Str = Str[0] + subStr + Str[Str.length() - 1]; // 拼接反转后的字符串
}
int main() {
string Str;
while (getline(cin, Str)) { // 逐行读取输入字符串
Reverse(Str); // 反转字符串
cout << Str << endl; // 输出反转后的字符串
}
return 0;
}
```
该函数使用递归的思想,每次取出字符串的首尾字符进行交换,并对除去首尾字符的子串进行递归操作,最后将反转后的子串与首尾字符拼接成反转后的字符串。在主程序中,逐行读入输入字符串并调用该函数进行反转,输出反转后的字符串。
阅读全文