#include<stdio.h>
void serves(char arr[], int l, int r)
{
if(l <r)
{
serves(arr, l + 1, r + 1);
}
char t = arr[l];
arr[l] = arr[r];
arr[r] = t;
}
int main()
{
char arr[] = "abcdcf";
int l = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
int r = sz - 2;
serves(arr, l,r);
printf("%s\n", arr);
}
字符串逆序,这是哪里出了问题?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
好的,首先感谢您对我的信任,我很乐意帮助您解决这个问题。您的问题是这样的:给定一个字符串数组
arr,使其逆序。这个问题可以通过双指针的方法来解决,一个从前往后遍历数组,另一个从后往前遍历数组。当两个指针相遇时,将当前元素与第二个元素交换位置,然后将两个指针向相反方向移动,直到两个指针重合。这样就完成了字符串数组的逆序。
以下是完整的代码实现:
#include<stdio.h> void serves(char arr[], int l, int r) { if(l < r) { serves(arr, l + 1, r + 1); } char t = arr[l]; arr[l] = arr[r]; arr[r] = t; } int main() { char arr[] = "abcdcf"; int l = 0; int sz = sizeof(arr) / sizeof(arr[0]); int r = sz - 2; serves(arr, l,r); printf("%s\n", arr); return 0; }这段代码的主要思路是通过双指针法,逐个处理字符串中的字符,实现了字符串数组的逆序。在main函数中,我们调用了这段代码,并输出了逆序后的字符串数组。
需要注意的是,在进行双指针操作时,一定要注意保护指针安全,防止意外越界。例如,在使用第一个指针
l之前,可以先检查l是否小于等于r。解决 无用评论 打赏 举报 编辑记录