逆序字符串
- 题目描述:
- 解法思路:
- 解法代码:
- 运行结果:
题目描述:
输入⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。
测试1:
输⼊:abcdef
输出:fedcba
测试2:
输⼊:abcdefg
输出:gfedcba
解法思路:
我们需要首先理解,逆序后的字符串与逆序之前的字符串的关系:
 1. 首位与末位互换;
 2. 第二位与倒数第二位互换;
 3. …
 4. 最中间的两位互换,或者字符串长度为奇数时,中间字符不变。
 因此,我们可以定义两个指针分别指向字符串首首位和末位,对其进行交换操作,然后将两个指针相向移动⼀位,继续交换剩余字符。直至两个指针的相对位置发生变化时结束操作,最终得到的字符串即为逆序后的字符串。
解法代码:
#include <stdio.h>
#include <string.h>
void reverse(char* str)
{
 //利⽤库函数求得字符串⻓度
 int len = strlen(str);
 //定义两个字符串指针分别指向字符串⾸位和末位
 char* left = str;
 char* right = str + len - 1;
 //当左指针在右指针左边时,进⾏交换
 while (left < right)
 {
 char tmp = *left;
 *left = *right;
 *right = tmp;
 //两个指针相向移动⼀位
 left++;
 right--;
 }
}
int main()
{
 char arr[31] = { 0 };
 //输⼊字符串
 scanf("%[^\n]s", arr);
 //对字符串进⾏逆序
 reverse(arr);
 printf("%s\n", arr);
 return 0;
}
运行结果:




















