天天看点

C++利用异或运算交换两数的值

问题:设计重载函数,必须使用按位异或(^)运算,实现快速交换两个整形变量的和浮点变量的值。

Input: 两个整型数a和b。

两个浮点型变量c和d.

Output: 输出交换后对应的值。

例如:

输入 1 2

1.1 2.1

输出

2 1

2.1 1.1

重点:要多组输入。

#include<iostream>
using namespace std;
int main()
{
    int a,b;
    double c,d;
    int*ap,*bp;
    ap=(int*)(&c);
    bp=(int*)(&d);
    while(cin>>a>>b)
    {
        a=a^b;
        b=a^b;
        a=a^b;
        while(cin>>c>>d)
        {
            *ap=(*ap)^*(bp);*bp=(*ap)^*(bp);*ap=(*ap)^*(bp);
            ap++;bp++;
            *ap=(*ap)^*(bp);*bp=(*ap)^*(bp);*ap=(*ap)^*(bp);
            cout<<a<<'\t'<<b<<endl;
            cout<<c<<'\t'<<d<<endl;
        }
    }
}
           

差不多是这样,自己运行和调试几次,或者根据题目要求进行适当改变。

如有帮助记得点赞与收藏!!!

继续阅读