這是個很common的例子,實現2個數據a,b的交換,a的值給b,b的值給a. 一般做法是借助中間變量緩存,實現交換。實現方法如下: #include<stdio.h> int main(void){ int a , b, t; scanf("%d%d", &a, &b); t = a; a = b; b = t; printf("%d %d\n", a, b); return 0; } 第二種方法是不用任何變量,使用強制相加,然後逐一分離,如下: #include<stdio.h> int main(void){ int a , b; scanf("%d%d", &a, &b);//a = a1,b = b1 a = a + b;//a = a1 + b1 b = a - b;//b = a1 + b1 - b1 => b = a1 a = a - b;//a = a1 + b1 - (a1 + b1 - b1) => a = b1 printf("%d %d\n", a, b); return 0; } 第三種方法,指針交換,例如: #include<stdio.h> int main(void){ int a , b; scanf("%d%d", &a, &b); printf("%d %d\n", b, a); return 0; } 還有一種是堆棧方式,改變出棧順序,嵌入匯編如下: push a push b pop a pop b 當然也可用c語言來實現堆棧函數,然後來完成a,b交換。 總結:實現方式多種,有自己的優劣勢。第一種常用,但多一個變量;第二種,少一個變量,但不常用;第三種簡潔好用。第四種用堆棧的特性先進後出,改變出棧順序實現交換。