交换两个数-c++实现
今天看了下交换数值的小程序,网上挺多的,整理了下,,因为参考较多,没一一给出链接,若原作者看到,可以留言,我会添加
// 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 ;
}
交换两个数-c++实现的更多相关文章
- c语言实现交换两个数的值
C语言中要实现交换两个数的值,可以有很多种方法,具体如下所述. 不使用中间变量: // 异或, a^=b^=a^=b; a ^= b; b ^= a; a ^= b; // 加减 a = a + b; ...
- 实现pow(int x, int y),即x的y次方 ; 异或交换两个数;
问题1:实现pow(int x, int y) ,即x的y次方 x的y次方就是有y个x连续乘机,代码如下: #include <stdio.h> #include <stdlib.h ...
- Qt_C++交换两个数
在编程过程中,交换两个数是我用常用的 ,这里做下简单的搬运 bool Widget::swap(int a, int b) { int temp =a; a= b; b = temp; } 这种方式其 ...
- C语言交换两个数的值
#include<stdio.h> int main() { //交换两个数的值 // 方法一 可读性最好 ; ; int temp ; temp = a; a = b; b = temp ...
- 20140806 交换两个数 extern “C”用法
1.交换两个数 方法1.a+b有可能越界 a=a+b; b=a-b; a=a-b; 方法二.不会越界 a=a^b b=a^b; a=a^b; 2.extern "C"用法 ( ...
- 几种交换两个数函数(swap函数)的写法和解析
#include <iostream> using namespace std; /*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/ void sw ...
- java中不创建使用第三方变量,交换两个数的值
1.直接使用算术运算法交换 先把两个数的和赋值给其中一个,然后做减法.例如num1=num1+num2; 此时num2(交换之后)就等于num1减去num2:废话不多说,直接上代码 public cl ...
- php不用第三个变量,交换两个数的值
//字符串版本 结合使用substr,strlen两个方法实现 $a="a"; $b="b"; echo '交换前 $a:'.$a.',$b:'.$b.'< ...
- c语言函数实现交换两个数的值
代码: #include <stdio.h> void swap(int x,int y) { int temp; temp = x; x = y; y = temp; printf(&q ...
随机推荐
- HDU1016 dfs
刷回溯的时候发现我对DFS思路很不清晰,总是做着做着就乱了,刷个水题找找思路. 题意:经典DFS,找出所有的能让1~n的数形成素数环的序列(相邻相加为素数): #include <iostrea ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- Mongodb在NUMA机器上的优化
10gen在mongodb的部署指南上,提到了在NUMA机器上,mongodb可能会出现问题,参见:http://docs.mongodb.org/manual/administration/prod ...
- firefox 不识别background-position-y / background-position-x
火狐不识别background-position-y 或background-position-x; 案例: 页面: 背景图: 一列按钮,点击时让当前背景图的background-position-y ...
- asp.net 把图片压缩成zip之后再进行下载
//这是导出的js方法 function fundaochu() { var data = "keyword=GetImageListdaochu&type=daochu&m ...
- CC3000 SPI接口编程介绍
CC3000 SPI 操作: CC3000的SPI 是基于五根线CLCK,CSn,IRQ,MISO,MOSI:通信模式如下图: CLCK:时钟频率0-26M从主机到从机,提供SPI接口时钟 CSn:低 ...
- 034. asp.netWeb用户控件之三通过用户控件实现用户注册和登录
用户控件login.ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile=& ...
- 【python】and和or的用法
python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值. or也是从左到有计算表达式,返回第一个为真的值. IDLE 1.2.4>>> ...
- vi编辑器的基本使用
进入vi为命令模式,需要按 i/a/o 键进入插入模式(在左下角最后一行有“-- INSERT --”字样). i:光标所在位置,进行输入(相似命令cw) a:光标所在位置的下一个位置,进行输入o ...
- PHP中float变量转换为int时,结果有误的问题!
先上例子: <?php $money = 100; $rate = 1.15; $result = $money * $rate; var_dump( intval( $result ) ); ...