. 建立一个字符数组str[100],建立一个函数void input(char *p)从console输入一个字符串到数组中。编写一个递归调用的函数reverse(char *p),将p所指向的字符串翻转。
时间: 2024-03-06 07:49:03 浏览: 87
好的,我了解了你的问题。下面是实现这个功能的代码:
```c
#include <stdio.h>
#include <string.h>
void input(char *p);
void reverse(char *p);
int main()
{
char str[100];
input(str);
printf("Original string: %s\n", str);
reverse(str);
printf("Reversed string: %s\n", str);
return 0;
}
void input(char *p)
{
printf("Please enter a string: ");
scanf("%s", p);
}
void reverse(char *p)
{
int len = strlen(p);
if (len <= 1) return; // 递归终止条件:字符串长度为1或0
char temp = p[0];
p[0] = p[len-1];
p[len-1] = temp;
reverse(p+1); // 递归调用:翻转除了第一个和最后一个字符之外的子串
}
```
代码逻辑如下:
1. 在main函数中定义一个字符数组,并调用input函数从控制台输入一个字符串到数组中。
2. 输出原始字符串。
3. 调用reverse函数翻转字符串。
4. 输出翻转后的字符串。
5. input函数用于从控制台输入字符串到数组中,无需递归。
6. reverse函数用于翻转字符串,是一个递归函数。递归终止条件是字符串长度为1或0,递归调用是翻转除了第一个和最后一个字符之外的子串。
希望这个代码可以帮到你!
阅读全文