思维挑战1:交换变量中的数
现在我们有两个变量 a 和 b ,并且它们都有一个初始值,现在我们希望将它们中的值交换。
首先我们读入并顺序输出它们 //C022
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d %d",a,b);
system("pause");
return 0;
}
接下来,我们尝试交换两个数,借助另一个临时变量 t //C023
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,t;
scanf("%d %d",&a,&b);
t=a;
a=b;
b=t;
printf("%d %d",a,b);
system("pause");
return 0;
}
但是如果我们不借助临时变量呢?
设 a,b
a1=b-a
b1=b-a1=b-b+a=a
a2=a1+b1=b-a+a=b
则 //C024
#include <stdio.h>
#include <stdlib.h>
int main( )
{
int a, b, t;
scanf("%d%d", &a, &b);
a=b-a;
b=b-a;
a=b+a;
printf("%d %d", a, b);
system("pause");
return 0;
}