第 7 章 习题
ch-7-problem-sets
#include <stdio.h>int k; int a[3]; void swap(int x,int y) { x=x+y; y=x-y; X=X-y; } void main() { k=1; a[0]=2; a[1]=1; a[2]=0; swap(k,a[k]); printf("k=%d,a[0]=%d,a[1]=%d,a[2]=%d\n" ,k,a[0],a[1],a[2]); swap(a[k],a[k]); printf("k=%d,a[0]=%d,a[1]=%d,a[2]=%d\n" ,k,a[0],a[1],a[2]); } 答:
我们看 swap 的实现。
x = x + y; // y = x - y; // y = (x + y) - y = x
x = x - y; // x = (x + y) - (x) = y
在 main 的前四行,初始化 k = 1, a = {2, 1, 0}