逆序字符串

本文介绍了解决字符串逆序问题的C语言方法,通过定义两个指针从字符串两端开始交换字符,直到相遇。给出了示例输入和输出,展示了如何使用strlen函数获取字符串长度并实现字符串逆序功能。
摘要由CSDN通过智能技术生成

题目描述:

输入⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。

测试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;
}

运行结果:

在这里插入图片描述

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值