不使用中间变量交换两个数

/*不交换中间变量交换两个数*/
#include <iostream>
using namespace std;
void Fun(int&x,int&y)
{
	x=x+y;
	y=x-y;
	x=x-y;
}

int main()
{
	int a=3,b=4;
	cout<<"交换前"<<endl<<"a="<<a<<"\t"<<"b="<<b<<endl;
	Fun(a,b);
	cout<<"交换后"<<endl<<"a="<<a<<"\t"<<"b="<<b<<endl;
	return 0;
}
时间: 2024-09-20 05:39:20

不使用中间变量交换两个数的相关文章

Java中不使用中间变量交换两个数

在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,就需要动一下脑筋.在本文介绍了两个方法(其实原理都是一个) .其基本原理就是数的中和. 也就是说,通过某种运算(二元运算)将a和b两个数变成一个数,并保存在其中一个变量中.然后再通过同 样的运算符将a或b中和掉.这样实际上是利用了a或 b本身作为了中间变量. 先看第一个算法. static class Num { int a; int b; } public static void swap1(Num num) { num.a = nu

不使用中间变量交换两个数(Java版)

本文为原创,如需转载,请注明作者和出处,谢谢!     在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,就需要动一下脑筋.在本文介绍了两个方法(其实原理都是一个).其基本原理就是数的中和.也就是说,通过某种运算(二元运算)将a和b两个数变成一个数,并保存在其中一个变量中.然后再通过同样的运算符将a或b中和掉.这样实际上是利用了a或b本身作为了中间变量.     先看第一个算法. static   class  Num {      int  a;      int  b; } pub

不用中间变量交换两个数 swap(a,b);

#include <iostream> using namespace std; int main () { int a = 3; int b = 5; cout<<"a="<<a<<",b="<<b<<endl; a = a+b; ///a=7 b = a-b; ///b=3; a = a-b; ///a=5 cout<<"a="<<a<<

C++ 全排序算法中交换两个数

问题描述 C++ 全排序算法中交换两个数 #include<iostream> using namespace std; void swap(int& a, int& b){ a = a + b; b = a - b; a = a - b; } void swap1(int&a, int& b){ int temp = b; b = a; a = temp; } void perm(int a[], int i, int n){ if(i == n - 1){

异或交换两个数

 交换a和b: #include <iostream> using namespace std; int main() {     int a,b;     while(cin>>a>>b)     {         a=a^b;         b=b^a;         a=a^b;         cout<<a<<" "<<b<<endl;     }     return 0; }

swap() 交换两个数

#include <stdio.h> void swap(int *x, int *y)//传入指针 { int tmp; tmp = *x; *x = *y; *y = tmp; } int main() { int a = 3; int b = 5; printf("a = %d, b = %d\n", a, b); swap(&a, &b); printf("a = %d, b = %d\n", a, b); return 0; }

交换问题-两个数交换,但不加入第三个数,对于这样的做法具体栈中是怎么一个顺序?

问题描述 两个数交换,但不加入第三个数,对于这样的做法具体栈中是怎么一个顺序? 两个数交换,但不加入第三个数,对于 int num1 =1; int num2 =2; System.out.println("交换前---num1="+num1+" num2="+num2); num2 = num1 +(num1 = num2)*0; System.out.println("交换后---num1="+num1+" num2="+

用C语言的泛型实现交换两个变量值_C 语言

第一种,最常用的是创建一个中间变量来循环交换它们的值: T a = ...; T b = ...; . T tmp = a; a = b; a = tmp; 我们称这种策略p99_swap1.在这里,编译器必须严格实现三个任务的顺序,否则,由此程序产生的结果将是不正确的. 第二种,叫它p99_swap2,试图做类似的事情,但放松一些顺序约束: T a = ...; T b = ...; . T tmpa = a; T tmpb = b; a = tmpb; b = tmpa; 用更多的资源(栈空

[算法问题]交换两个子数组的元素值

问题描述: 设a[0:n-1]是一个有n个元素的数组,k(0<=k<=n-1)是一个非负整数.试设计一个算法将子数组 a[0:k]与a[k+1:n-1]换位.要求算法在最坏情况下耗时O(n), 且只用到O(1)的辅助空间. 这个问题比较常见了,一般的办法就是分别把两个子数组分别逆序排列,然后对整个数组进行逆序排列.也就是说,对一个数组 a[8] = {1,2,3,4,5}而言,如果k = 2,那么首先对两个子数组进行逆序操作得序列{3, 2,1,5,4},然后对整个数组逆序排列得到{4,5,1