经常会遇到的题:给定两个整形变量的值,将两个值的内容进行交换,也会演变成这种:不允许创建临时变量,交换两个数的内容。今天将交换的方法总结一下。
第一种(引入一个中间变量):
int main()
{
int a = 5, b = 10;
int tmp;
tmp = a;
a = b;
b = tmp;
printf("a = %d, b = %d\n", a, b);
return 0;
}
第二种(采用加减法):
int main()
{
int a = 5, b = 10;
a = a + b;
b = a - b;
a = a - b;
printf("a = %d, b = %d\n", a, b);
return 0;
}
第三种(采用异或):
int main()
{
int a = 5, b = 10;
a ^= b;
b ^= a;
a ^= b;
printf("a = %d, b = %d\n", a, b);
return 0;
}
这里再多加一个数组的交换,采用第一种方法:
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int b[5] = { 5, 4, 3, 2, 1 };
int i;
printf("a数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("b数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", b[i]);
}
printf("\n");
for (i = 0; i < 5; i++)
{
int tmp;
tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
printf("a数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("b数组:");
for (i = 0; i < 5; i++)
{
printf("%d ", b[i]);
}
printf("\n");
system("pause");
return 0;
}