【C語言】交換兩值

白話文——C語言題2

交換兩值可以分爲兩種情況:

1.引入變量,交換兩值

 - 直接交換
int main()
{
	int a = 10;
	int b = 20;
	int tmp;

	tmp = a;
	a = b;
	b = tmp;

	printf("a = %d b = %d ", a, b);
	printf("\n");

	system("pause");
	return 0;
}

 - 調用函數
 - void swap(int* x, int* y)
{
	int z = *x;
	*x = *y;
	*y = z;
}

int main()
{
	int a = 10;
	int b = 20;
	swap(&a, &b);
	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}

2. 不引入變量,交換兩值

  • 按位異或
int main()
{
	int a = 10;
	int b = 20;

	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	
	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}
  • 加法
int main()
{
	int a = 10;
	int b = 20;
	
	a = a + b;
	b = a - b;
	a = a - b;

	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}
  • 乘法
int main()
{
	int a = 10;
	int b = 20;
	
	a = a * b;
	b = a / b;
	a = a / b;

	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}
  • 注:在不引入臨時變量交換時,儘量使用按位異或的方式。在加法、乘法計算中會出現棧溢出的情況。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章