不使用临时变量 依次交换两个已知数组的值

刚开始编写中间使用了一个临时数组!!浪费空间!后面优化到只使用一个临时变量!最后到不使用临时变量!

#include<stdio.h>

int main()

{

int arr1[] = { 1, 2, 3 };

int arr2[] = { 4, 5, 6 };

int i = 0;

int sz = sizeof arr1 / sizeof arr1[0];

for (i = 0; i < sz; i++)

{

arr1[i] = arr1[i] ^ arr2[i];

arr2[i] = arr1[i] ^ arr2[i];

arr1[i] = arr1[i] ^ arr2[i];

}

for (i = 0; i < sz; i++)

{

printf("%d ", arr1[i]);

}

printf("\n");

for (i = 0; i < sz; i++)

{

printf("%d ", arr2[i]);

}

system("pause");

return 0;

}

时间: 2024-07-31 14:19:18

不使用临时变量 依次交换两个已知数组的值的相关文章

C语言中不允许创建临时变量,交换两个数的内容

在C语言中可以通过建立临时变量来实现两个变量的交换,当不允许建立临时变量时,应该怎样实现两变量的交换呢? 假设有两个变量num1和num2:下面通过两种方法进行分析. 方法一:利用加减法.具体算法分析如下: 由于num1+num2-num1=num2; num1+num2-num2=num1; 则将num1+num2赋给num1:num1-num2赋给num2:num1-num2赋给num1,这样就可以实现num1和num2两个数内容的交换.通过相同的思想,我们也可以将加减运算改为乘除运算,但此

不利用临时变量,交换两个变量的值

1.借助中间量交换 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下: int x = 10; int y = 20; int temp = x; x = y; y = temp; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用.在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法).上面的算法最大的缺点就是需要借助一个临时变量.那么不借助临时变量可

不用临时变量,交换两个变量的值

在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.类似于:temp=a;a=b;b=temp;这样的语句,如果在没有临时变量的情况下,该如何做呢?网络上的人们给出了两种方法:一.异或法a=a^b;b=b^a;a=a^b;二.加减法a = a + b; b = a - b; a = a - b;其实我们看加减法更容易理解,也有许多人用这种方法,虽然这些方法可能用不到,但是了解下还是有必要的,至少要读懂别人的代码是吧. 其实两个方法都类似,我们没有临时变量,就自己用一个来做临时变量(相当

不创建临时变量,交换两整数的值

(1)加减法:a=a+b;b=a-b;a=a-b; (2)乘除法:a=a*b;b=a/b;a=a/b; (3)异或运算:a=a^b;b=a^b;a=a^b;(遇到a可翻译b,遇到b可翻译a) ^异或(按位异或):相同出0,相异出1. 如:2    0000 0000 0000 0010 3    0000 0000 0000  0011 2^3      0000 0000 0000 0001 =1 2^3^2  0000 0000 0000 0011=3 --加减运算#include <std

不需要创建临时变量,交换两个数的值。

The easier way: #include<stdio.h> #include<stdlib.h> int main() { int a,b; scanf("%d%d",&a,&b); a=a+b; b=a-b; a=a-b; printf("a=%d\nb=%d\n",a,b); system("pause"); return 0; } The solution is easy to deal wi

C语言实现 &nbsp; 不允许创建临时变量,交换两个数的内容

#include "stdio.h" void main() { int a=1,b=2; a=a^b; b=a^b; a=a^b; printf("a=%d\n",a); printf("b=%d\n",b); }

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

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

不用新的变量,交换两个变量的值。

不用新的变量,交换两个变量的值.比如有2个变量a , b ,我们希望交换他们的值. 下面介绍两种不同的解法: 第一种:基于加减法 a = a + b ;   //先让a等于和 b = a - b ;  //和减去原来b的值得到原来a的值,赋值给b a = a - b : //和减去改变后b的值(原来a的值)得到原来b的值,赋值给a 第二种:基于异或运算 a = a ^ b  // 先a异或上b,赋值给a b = a ^ b  // a异或上b,消去b的影响得到原来的a,赋值给b a = a ^

不借助第三个变量,交换两个变量值的3种方式

今天在我们学校的OJ上做题,一道非常简单的题,突然想试试能不能不借助第三个变量,交换两个变量值.蒙出来一半了已经,好可惜.现在把方法写在这里,希望以后不要忘记. 1 void fun1() 2 { 3 int a = 10, b = 100; 4 5 a = a + b; 6 b = a - b: 7 a = a - b; 8 printf("%d\n%d\n", a, b); 9 } 10 11 void fun2() 12 { 13 int a = 10, b = 100; 14