交换两变量值

下面两种方法不使用第三变量实现了两变量值的交换,C代码如下:

 1 #include <stdio.h>
 2
 3 #define SWAP1(a,b) {a=a+b; b=a-b; a=a-b;}
 4
 5 #define SWAP2(a,b) {a^=b; b^=a; a^=b;}
 6
 7
 8 int main(void)
 9 {
10     int a=1234, b=5678;
11
12     printf("a=%d, b=%d\n", a, b);
13     printf("DO SWAP1:\n");
14     SWAP1(a,b);
15     printf("a=%d, b=%d\n", a, b);
16
17     printf("DO SWAP2:\n");
18     SWAP2(a,b);
19     printf("a=%d, b=%d\n", a, b);
20
21     system("pause");
22     return 0;
23 }

编译后运行,结果如下:

a=1234, b=5678
DO SWAP1:
a=5678, b=1234
DO SWAP2:
a=1234, b=5678
请按任意键继续. . .

时间: 2024-12-21 09:59:42

交换两变量值的相关文章

C语言如何交换两变量值?5大方法告诉你!

写在前面: C语言中交换两个变量值的操作经常会用到,也有不少人提问诸如不用临时变量怎么交换两个变量值的问题,今天我们在这里进行一个总结,也算是对这个问题的统一回复,我一共总结了5种方法(名字都是我自己取的,不当之处还请批评指正),希望大家看完有所收获. 1.临时变量法 方法解释:采用临时变量的方法,作为中间过渡,这是最简单也是大家最容易想到的方法,此法在各种场合应用极多,应该熟练掌握. #include<stdio.h> int main(void) { int a=1,b=2,tmp; tm

Python、C++中编写函数以及不使用临时变量交换两变量值的比较

在C++中,交换两变量的值一般第一反应都会是如下的代码: { temp=a; a=b; b=temp } 但是题目要求不允许使用临时变量temp呢?可能就需要想一会了.但也有解决办法: { b=a+b; a=b-a; b=b-a; } 这种做法在a和b数值较小的情况下是对的,但是a+b如果很大则会溢出,所以也不是最优的解法.最好的方法是使用异或: { a ^= b b ^=a a ^=b } 在Python中这个问题就太弱智啦! a,b=b,a 直接一行搞定! 如果题目要求编写一个函数来交换两变

C++入门经典-例5.7-调用自定义函数交换两变量值,传入指针

1:代码如下: // 5.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } void swap(int a,int b) { int tmp; tmp=a; a=b; b=tmp; } void main() { int x,y;

一种不用参数交换两变量值的方法

除了最简单的三变量法外 还有一种不用参数的交换法 #include <stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); a=a+b; b=a-b; a=a-b; printf("%d %d\n",a,b); return 0;} 这种方法范围窄,只有定义了加减法的数据类型才可以使用 但只是输出交换变量 所以最简单的方法是 scanf("%d%d",&a,&am

C#之不借助第三变量交换两变量值

源码: int n1=10, n2=20; n1 = n1 - n2;   // -10 n2 = n1 + n2;  //  10 n1 = n2 - n1;  //   20

&lt;22&gt;【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = &num; //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算

问题:一般我们要交换两个变量的值,多会采取一个额外变量来实现,比如temp=a,a=b,b=temp,现在我们能不利用temp来实现交换a,b两个变量值的目的吗? 解决方案:^异或运算符,而且我们会发现a^a=0,还有0^a=a,依据这两条理论,我们可以实现之前提出的问题. 代码如下: #include<stdio.h>void inplace_swap(int * x,int * y){    *y=*x^*y;    *x=*x^*y;    *y=*y^*x;}int main(){  

C#交换两个变量值的多种写法

在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个变量的值. 使用临时变量实现 static void Main(string[] args) { int x = 1; int y = 2; Console.WriteLine("x={0},y={1}",x, y); int temp = x; x = y; y = temp; Cons

不使用临时变量 交换两个变量值

不使用临时变量 交换两个变量值1.$a = $a+$b;$b = $a-$b;$a= $a-$b; 2.list($a, $b) = array($b, $a); 3. $a = $a ^ $b;$b = $a ^ $b;$a = $a ^ $b;