问题:要求输入字符串后,输出字符串反转后的结果。例:输入"abcde",输出"edcba"
方法一
#include<string.h>
#include<iostream>
using namespace std;
int main(){
char s[]="abcdefghijkl";
int i=0,j=strlen(s)-1;
while(i<j){
s[i]^=s[j]^=s[i]^=s[j];
i++;
j--;
}
cout<<s;
return 0;
}
分析:^为异或,按二进制位异或,相同为0,不同为1。例:1010与1001异或,结果为0011。
s[i]^=s[j]^=s[i]^=s[j]; 可以写成s[i]^=s[j];s[j]^=s[i]; s[i]^=s[j];
方法二
#include<string.h>
#include<iostream>
using namespace std;
int main(){
char s[]="abcdefghijkl";
int x=strlen(s);
char res[x];
for(int i=x-1;i>=0;i--){
res[x-i]=s[i];
}
cout<<res;
return 0;
}