交換指標指向的整數

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。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。