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