分享几个交换 a 与 b 的值的方法,都是我平时在网上看到的。
法1、临时变量法(几乎没有局限性)
#include<stdio.h>
int main(void)
{
int a, b;
printf("Please enter a and b:");
scanf("%d%d", &a, &b);
int c;
c = b;
b = a;
a = c;
printf("a = %d\nb = %d\n", a, b);
return 0;
}
法2、加减交换法(如果a和b都特别大可能会超出C语言系统所能储存的最大数值,也就是可能超出上限)
#include<stdio.h>
int main(void)
{
int a, b;
printf("Please enter a and b:");
scanf("%d%d", &a, &b);
a = a + b;
b = a - b;
a = a - b;
printf("a = %d\nb = %d\n", a, b);
return 0;
}
法3、异或符号法(几乎没有什么局限性)
#include<stdio.h>
int main(void)
{
int a, b;
printf("Please enter a and b:");
scanf("%d%d", &a, &b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d\nb = %d\n", a, b);
return 0;
}
法4、乘除交换法(要求a和b都不能为0)
#include<stdio.h>
int main(void)
{
int a, b;
printf("Please enter a and b:");
scanf("%d%d", &a, &b);
a = a * b;
b = a / b;
a = a / b;
printf("a = %d\nb = %d\n", a, b);
return 0;
}
法5、位运算法(如果a和b都特别大可能会超出C语言系统所能储存的最大数值,也就是可能超出上限)
#include<stdio.h>
int main(void)
{
int a, b;
printf("Please enter a and b:");
scanf("%d%d", &a, &b);
a = a<<8;
a = a+b;
b = a>>8;
a = a&0xff;
printf("a = %d\nb = %d\n", a, b);
return 0;
}
看了这几种方法是不是感觉很有用呢?快在自己的代码中运用起来吧,嘿嘿。