题目要求:输入两个整数变量,并交换两个整数变量的值
在不使用第三个变量的情况下,有以下两种方法
方法一:简单加减法
假设a,b两个整形变量,从键盘输入值赋值给这两个变量.将a+b的结果赋值给变量a,这时变量a存储着最初两个变量值的和.再将a-b的结果赋值给变量b,这时变量b就存储着a-b的值,也就是最初变量a的值.最后将a-b的结果赋值给变量a,由于上一步代码执行,变量b的值已经变为最初变量a的值,再执行完这一步后,变量a存储着a-b的结果,也就是最初变量b的值.这样变量a,b的值就已经交换好了.
代码实现如下:
#include <stdio.h>
int main()
{
int a,b;
printf("请输入a的值:");
scanf("%d",&a);
printf("请输入b的值:");
scanf("%d",&b);
a=a+b;
b=a-b;
a=a-b;
printf("a:%d,b:%d",a,b);
}
方法二:两数异或
假设a,b两个整形变量,从键盘输入值赋值给这两个变量.将a^b的结果赋值给变量a,变量a就存储着最初变量a与变量b值的异或的结果.再将a^b异或结果赋值给变量b,(注意此时变量a的值已经变成a^b的结果),当再进行一次a和b的异或运算就会得到最初变量a的值,所以变量b就得到了最初变量a的值.最后将a^b的运算结果再赋值给a,此时变量a就得到了最初变量b的值.如此,变量a和变量b的值就完成了交换.
代码实现如下:
#include <stdio.h>
int main()
{
int a,b;
printf("请输入a的值:");
scanf("%d",&a);
printf("请输入b的值:");
scanf("%d",&b);
a=a^b;
b=a^b;
a=a^b;
printf("a:%d,b:%d",a,b);
}