交换两个数-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 ...
随机推荐
- C# winform应用程序仅能打开一个进程运行
判断程序是否已经运行,使程序只能运行一个实例: 方法1: //这种检测进程的名的方法,并不绝对有效.因为打开第一个实例后,将运行文件改名后,还是可以运行第二个实例. private static bo ...
- C++学习笔记22:设备
设备类型 设备文件的性质 设备文件不是普通的磁盘文件 读写设备的数据需要与相应的设备驱动器通信 设备文件的类型 字符设备:读写串行数据字节流,如串口.终端等 块设备:随机读写固定尺寸数据块,如磁盘设备 ...
- Java-->Gson解析相较于Json
--> Gson解析jar包: 链接:http://pan.baidu.com/s/1slCeq77 密码:f9ig --> 官方Json解析工具类: package com.drago ...
- IT行业的正式入门
虽然我是计算机专业毕业的大学生,但我自己认为我连什么是 IT都不了解,我热爱Java程序的设计,所以我现在在努力学习,今天是上Java程序设计的第一天,我正式进入IT业,踏上了这条“不归路”.figh ...
- MSP430学习笔记:UART
串通可以两种方法其现 一.USART硬件直接实现 二.通过定时器软件实现 该模块可现现: UART异步串行通讯 SPI同步串行通讯 I2C同步串行通讯 UxCTL控制寄存器 7:PENA 6:PEV ...
- Event List 2
The list of events can be found in src/switch_event.c in a char array called EVENT_NAMES and is summ ...
- QTreeWidget创建
QTreeWidget.顾名思义,这个类用来展示树型结构.同前面说的QListWidget类似,这个类需要同另外一个辅助类QTreeWidgetItem一同使用.不过,既然是提供方面的封装类,即便是看 ...
- list control失去焦点后,仍然蓝色高亮度显示
void CReaProSet::OnNMKillfocusReaprolist(NMHDR *pNMHDR, LRESULT *pResult)//指示控件已经失去焦点 { // TODO: 在此 ...
- 解决Selenium Webdriver执行测试时,每个测试方法都打开一个浏览器窗口的问题
虽然把WebDriver定义为一个静态变量了,但是每次执行测试都要打开多个窗口,挺浪费时间的. 找了很多中方法,比如使用setUpClass, BeforeSuite都没有完全解决问题.后来无意间发现 ...
- checkbox 选中、取值处理
[1].[代码] checkbox 选中.取值处理 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...