今天看了下交换数值的小程序,网上挺多的,整理了下,,因为参考较多,没一一给出链接,若原作者看到,可以留言,我会添加
// 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=,y=;
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 ;
}