首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对字符串做异或交换,出现有关问题

2013-03-29 
对字符串做异或交换,出现问题整形做异或交换,可以减少一个中间变量temp如int a,baa^bba^baa^b实现a

对字符串做异或交换,出现问题
  整形做异或交换,可以减少一个中间变量temp

int a,b;
a=a^b;
b=a^b;
a=a^b;
实现a,b内容的交换

换成char型有问题,代码如下,有点晕,不知道出啥问题了

#include <iostream>
using namespace std;
void reverse(char *str)
{
//n为字符串长度
int n=strlen(str)-1;
for(int i=0;i<=n/2;++i){
str[i]=str[i]^str[n-i];
str[n-i]=str[i]^str[n-i];
str[i]=str[i]^str[n-i];
}
cout<<str<<endl;
}

void main()
{
char str[]="I am a student.";
reverse(str);
system("pause");
}


求助各位,谢谢啦~
[解决办法]
异或交换有个问题一定要注意,就是自身交换的情况会变成0
i<=n/2去掉等号
[解决办法]
奇技淫巧,完全没有必要。

//char str[]="I am a student.";
char str[]="I am a student";

[解决办法]
引用:
异或交换有个问题一定要注意,就是自身交换的情况会变成0
i<=n/2去掉等号


++
[解决办法]
不知道lz见没见过不用中间变量也不用异或的交换方法?相当于有瓶子A装了些醋和瓶子B装了些酱油,如何交换后A装的酱油,B装的醋?原理就是把醋倒进B,然后把B中的酱油放进A.在现实中可能无法分离醋和酱油,但是数值计算时可以通过加减法来处理。但是前提是瓶子足够大以存放醋和酱油的合集。懂得交换原理就行了,在这方面搞研究没必要

热点排行