使用C++语言实现以下功能“建立一个字符数组str[100],建立一个函数void input(char *p)从console输入一个字符串到数组中。编写一个递归调用的函数reverse(char *p),将p所指向的字符串翻转。”
时间: 2024-03-10 21:46:21 浏览: 80
好的,我很乐意回答你的问题。
以下是用 C++ 实现上述功能的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void input(char *p);
void reverse(char *p);
int main() {
char str[100];
input(str);
reverse(str);
cout << "The reverse string is: " << str << endl;
return 0;
}
void input(char *p) {
cout << "Please enter a string: ";
cin.getline(p, 100);
}
void reverse(char *p) {
static int i = 0, j = strlen(p) - 1;
if (i < j) {
char temp = p[i];
p[i] = p[j];
p[j] = temp;
i++;
j--;
reverse(p);
}
}
```
代码中,`input` 函数用于从控制台输入一个字符串,存储到 `str` 字符数组中。`reverse` 函数使用递归的方式将 `p` 所指向的字符串翻转。具体来说,`reverse` 函数使用两个静态变量 `i` 和 `j` 分别表示字符串的起始位置和结束位置,每次将 `i` 所指向的字符和 `j` 所指向的字符交换位置,然后递归调用 `reverse` 函数处理剩下的子串。当 `i` 大于等于 `j` 时,递归结束,字符串翻转完成。
希望这个代码能够帮助到你。如果你有任何问题或者需要进一步的帮助,请随时问我。
阅读全文