交换两个数的三种方法

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

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

void swap1(int &a,int &b)  //使用引用
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

void swap2(int &a,int &b)  //不依靠外部变量  可能会越界
{
    a=a+b;
    b=a-b;
    a=a-b;
}

void swap3(int &a,int &b) //异或操作
{
    a^=b;
    b^=a;
    a^=b;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int e=100;
    int f=1000;
    swap1(e,f);
    cout<<e<<"\t"<<f<<endl;
    e++;
    f++;
    swap2(e,f);
    cout<<e<<"\t"<<f<<endl;
    e++;
    f++;
    swap3(e,f);
    cout<<e<<"\t"<<f<<endl;
    return 0;
}

时间: 2024-11-01 06:59:52

交换两个数的三种方法的相关文章

交换两个数的几种方法

第一种:利用第三方变量 1 int a = 10, b = 12; 2 int temp = 0; 3 temp = a; 4 a = b; 5 b = temp; 6 Console.WriteLine( a); 7 Console.WriteLine( b); 第二种:加加减减法 1 int a = 10, b = 12; 2 a = a+b;//a=22 3 b = a-b;//22-12=10 4 a = a - b;//22-10=12 5 Console.WriteLine( a);

写一个函数返回参数二进制中 1 的个数(三种方法)

1.运用了除法,取余方式递推出结构2.运用右移符(>>)运算3.利用算术与(&)运算 三种方法效率越来越高,减少成本 #include<stdio.h> int Number1(int n) { int k; int count=0; while (n > 0) { k = n % 2; n /= 2; if (1 == k) { count++; } } return count; } int Number2(int n) { int count = 0; whil

【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)

输入一个整数,输出该数二进制表示中1的个数.如输入32,输出1. 代码实现: 方法1:与运算 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; int FindOneNumber(unsigned int num) {     int numberofOne = 0;     while (num)     {         num = num & (num - 1);         

输出一个数的二进制序列中1的个数(三种方法)

由于这个数有可能是负数,负数在计算机中以补码的方式存储,要求负数的补码中1的个数依然可以正确输出,方法如下: 1.定义这个数的变量类型为无符号整型(unsigned int) 代码为 include<stdio.h>int count_one_bits(unsigned value){int count=0;while(value){   if(value%2==1)   {count++;   }   value=value/2; }return count;}int main(){unsi

交换两个整数的三种方法

package com.zby.bubble; /** * <class description> 三种方法交换两个整数的值 * * @author zby * */ public class Exchange { public static void main(String[] args) { splitLine(); exchange1(Integer.MAX_VALUE, Integer.MAX_VALUE - 1); exchange1(99, 100); exchange1(Inte

C语言编程 求两个数的平均值方法(三种方法)

第一种方法是最常见的average=(a + b) / 2这种方式,求两个数的平均值 第二种方法是当 a<b 时averag=a+(b-a)/2 这里着重介绍的是第三种方法 average=(a&b) + (a^b)>>1 推导过程如下a + b = (a&b) 2 + (a^b)) --->average=((a&b)2+(a^b))/2 ---->average=(a&b) + (a^b)>>1 eg:两个数为15和515二进制

用多种方法交换两个数的值

今天上了C语言课,老师讲了有关交换两个数的问题.课后,经过自己的思考和总结,我得出了以下几种方法.虽然这个问题的方法还有很多,但我目前只了解到了这五种方法,希望大家多提建议和意见.其他的方法待补充奥... 法一: 大家最容易想的方法,首先设一个临时变量,利用临时变量将两个数交换.下面是实现它的代码: #include<stdio.h> int main() {   int num1=5,num2=10,tmp=0;   printf("before:\n");   prin

数据交换的三种方法

此处以C语言为例: 例:两个整型数:A和B,交换两个数 方法一:利用一个中间变量——C 先将A的值存入C中,再将B的值赋值给A,最后,再将C的值赋值给B. 方法二:利用加减法互换 先将A+B的值存入A中,再将A-B的值存入B,此时,B中的值就是原来A的值,最后,再将A-B的值存入A,此时,A的值就是原来B的值. 但是,这种方法在执行A+B操作时,会产生溢出,因此,不靠谱,我们再看看方法三. 方法三:利用异或操作 我们知道A^B^B = A, 我们将A^B的值存入A,与B异或后存入B,此时,B的值

如何不使用第三个变量来交换两个数的值

最近在看<c++从入门到精通>自学c++,里面有一道课后题是如何做到不适用第三个变量来交换两个数的值,以下是我在网上查找到的资料,记录下并作为笔记. 题目:a=10,b=15,将a / b的值互换. 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下:      int a,b;      a=10; b=15;      int t;      t=a; a=b; b=t;      这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用