请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 00:05:10
请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数

请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?
请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?
那实现两数交换的方法总共有几种呢?

请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?
如果不借助其它中间变量,比较简单的方法有以下三个,当然假设a+b不会溢出
1.int a=5,b=10;
a=a-b;
b=a+b;
a=b-a;
printf("a=%d,b=%d\n",a,b);
2.a=5,b=10;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%d\n",a,b);
3.a=5,b=10;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d\n",a,b);
就像楼上说的:要是调用函数交换有很多,这里就无法一一列举了