求高人赐教
char* Reverse(char* str) {
int len = strlen(str);
char temp;
for (int i = 0; i < len / 2; i++) {
temp = str[i];
str[i] = str[--len];
str[--len] = temp;
}
return str;
}
在中间的交换过程中存在问题。使用--x的形式会先进行自减再使用变量的值。我们假设len长度为8。那么当i=0时,循环过程就变成了如下的代码:
temp=str[0];
str[0]=str[7];
str[6]=temp;
并且,len的值也产生了变化,会影响到for循环的运行。
可以列举观察下,
当i=0时,交换的位置是len-1,
当i=1时,交换的位置是len-2,
当i=3时,交换的位置是len-3,以此类推,发现规律,是i与len-1-i进行交换。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char* Reverse(char *str)
{
char temp;
int len=strlen(str);
for(int i=0;i<len/2;i++)
{
temp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=temp;
}
return str;
}
int main()
{
char mystr[100]={0};
cin>>mystr;
Reverse(mystr);
cout<<mystr;
return 0;
}
直接复制粘贴会有格式上的问题,我上传了一份到网盘,有需要自行获取。
手打不易,望采纳~