今天看了下交换数值的小程序,网上挺多的,整理了下,,因为参考较多,没一一给出链接,若原作者看到,可以留言,我会添加

 

// example_1_6_function_swap.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
using namespace std;


//done!!效率最高的
void point(int*a,int*b )
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
}
//done!!优点是不用中间变量,效率低
void point_jia_jian(int*a,int*b )
{
    
    *a=*a+*b;
    *b=*a-*b;
    *a=*a-*b;
}
//不要中间变量,位运算实现
//异或的运算规则是:相同为假,不同为真。
//真⊕假=真
//假⊕真=真
//假⊕假=假
//真⊕真=假
//因此,两个相同的数异或等于0,0与任何一个数异或等于那个数本身
//同或运算规则是:相同为真,不同为假
//真⊕假=假
//假⊕真=假
//假⊕假=真
//真⊕真=真
//因此,两个相同的数同或等于1,1与任何一个数同或等于那个数本身
void swap3(int*a,int*b)
{
  *a^=*b;
  *b^=*a;
  *a^=*b;
}

//通过四则运算实现,但是缺点是不能对原变量值进行交换,可用于交换整型和浮点型,但是浮点型会出现误差
void swap_jia_jian(int a,int b)
{
    /*done!!
    a=a+b;
    b=a-b;
    a=a-b;
    cout<<"交换后"<<endl;
    cout<<"X="<<a<<"  "<<"Y="<<b<<endl;*/
    
    /*
    a = a - b;
    b = a + b;
    a = b - a;
    cout<<"交换后"<<endl;
    cout<<"X="<<a<<"  "<<"Y="<<b<<endl;
    */
    
    //done!!
    a=a*b;
    b=a/b;
    a=a/b;
    cout<<"交换后"<<endl;
    cout<<"X="<<a<<"  "<<"Y="<<b<<endl;
}


//通过引用实现
void swap(int &a,int &b)
{
    int t;
    t=a;
    a=b;
    b=t;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int x=0,y=0;
    cout<<"请输入X="<<endl;
    cin>>x;
    cout<<"请输入Y="<<endl;
    cin>>y;
    cout<<"交换前"<<endl;
    cout<<"X="<<x<<"  "<<"Y="<<y<<endl;
    


    /*done!!
    swap3(&x,&y);
    cout<<"交换后"<<endl;
    cout<<"X="<<x<<"  "<<"Y="<<y<<endl;
    */
    /*done!!
    swap_jia_jian(x,y);
    */

    /*done!!
    point_jia_jian(x,y);
    */
    

    /*done!!
    point(&x,&y);
    cout<<"交换后"<<endl;
    cout<<"X="<<x<<"  "<<"Y="<<y<<endl;
    */

    /* done!!
    swap(x,y);
    cout<<"交换后"<<endl;
    cout<<"X="<<x<<"  "<<"Y="<<y<<endl;
    */

    system("pause");
    return 0;
}

 

posted on 2015-08-05 15:28  Jack-su  阅读(451)  评论(0编辑  收藏  举报