天天看點

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;
        }
    }
}
           

差不多是這樣,自己運作和調試幾次,或者根據題目要求進行适當改變。

如有幫助記得點贊與收藏!!!

繼續閱讀