一开始我的代码是这样写的
思路就是:
如果a>b,则b一路加到a, i=a-b,然后a=a-i=b;
a<b同理
#include <stdio.h>
void Swap(int *, int *);
int main()
{
int x;
int y;
printf("Input the value of x: ");
scanf("%d", &x);
printf("Input the value of y: ");
scanf("%d", &y);
Swap(&x, &y);
printf("After Swap each others' values, x = %d, y = %d", x, y);
}
void Swap(int *x, int *y)
{
int i = 0;
if(*x < *y)
{
for(; *x < *y; i++)
(*x)++;
*y -= i;
}else
{
for(; *y < *x; i++)
(*y)++;
*x -= i;
}
}
更具SICP“黑盒抽象概念”,我的修改为:
void Swap(int *x, int *y)
{
if (*x < *y)
For(x, y);
else
For(y, x);
}
void For(int *min, int *max)
{
int i = 0;
for (; *min < *max; i++)
(*min)++;
*max -= i;
}