交換指標指向的整數
0.5s 256M請實作一個名為 int_swap 的函式。當評分程式執行 int_swap(&a, &b); 之後,變數 a 與 b 儲存的值必須互相交換。
你需要實作以下函式:
void int_swap(int *a, int *b);
- 正式評分程式會準備兩個不同的
int變數,然後呼叫int_swap(&a, &b);。 - 指標
a與b都會指向有效的整數變數,不會是空指標。 - 呼叫結束後,
a指向的整數必須變成原本b指向的整數,b指向的整數必須變成原本a指向的整數。 - 請不要自行處理輸入輸出。
- 評測會檢查你的原始碼,禁止呼叫
swap或std::swap。請在int_swap中使用暫存變數與指標解參照自行完成交換。
輸入格式
範例評分程式採用以下格式輸入:
T
a_1 b_1
a_2 b_2
\vdots
a_T b_T
其中 \(T\) 代表評分程式會呼叫 int_swap 的次數。
請注意,正式評分時不會要求你自行讀取輸入;它會直接呼叫你實作的函式。
限制
- \(1 \le T \le 50\)
- \(-10^9 \le a_i, b_i \le 10^9\)
- 每次呼叫時,兩個指標都不是空指標,且指向兩個不同的
int變數
輸出格式
範例評分程式在每次呼叫 int_swap(&a, &b); 後,會輸出交換後的 a 與 b。
請注意,正式評分時不會要求你自行輸出任何內容。
範例輸入 1
3
1 2
-3 10
0 0
範例輸出 1
2 1
10 -3
0 0
範例解釋 1
第一筆資料中,呼叫 int_swap(&a, &b); 前,a = 1 且 b = 2。呼叫後,a 變成 2,b 變成 1。
範例輸入 2
4
-7 -9
42 42
100 -100
1000000000 -1000000000
範例輸出 2
-9 -7
42 42
-100 100
-1000000000 1000000000
本機測試模板
如果你想先在自己的電腦上測試,只要把你實作的 int_swap 函式貼到下面程式碼中的註解位置,就可以直接編譯執行:
#include <iostream>
using namespace std;
// 把你實作的 int_swap 貼在這裡。
// void int_swap(int *a, int *b) {
// }
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int a, b;
cin >> a >> b;
int_swap(&a, &b);
cout << a << ' ' << b << '\n';
}
}
題目來源
本題改編自 NTUCPC OJ Problem 625。