不通过中间变量交换两个数的值可以有效的节省内存空间,具体做法有以下两种。
1、异或算法
a=a^b;
b=a^b;
a=a^b;
原理介绍:从第二行带入算式b=a^b=a^b^b=a;
a=a^b^a^b^b=b;
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=0;
int b=0;
printf("请输入a,b的值:");
scanf("%d%d",&a,&b);
printf("a=%d b=%d\n",a,b);
printf("交换后的值为:\n");
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
return 0;
}
2、加减法
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=0;
int b=0;
printf("请输入a,b的值:");
scanf("%d%d",&a,&b);
printf("a=%d b=%d\n",a,b);
printf("交换后的值为:\n");
a=a+b;
b=a-b;
a=a-b;
printf("a=%d b=%d\n",a,b);
return 0;
}