輸入:多組測試資料,每行首個整數 n (n < 100) 後接 n 個整數。n = 0 結束。
輸出:每組找出最小值與首位元素交換後的數列,空格分隔,換行結束。
範例:
輸入:4 2 1 3 4 → 輸出:1 2 3 4
輸入:5 5 4 3 2 1 → 輸出:1 4 3 2 5
n,若 0 則退出。n 個整數至陣列 a。min_idx。a[0] 與 a[min_idx]。#includeint main() { int n, a[100]; while (scanf("%d", &n) == 1 && n != 0) { for (int i = 0; i < n; ++i) scanf("%d", &a[i]); int min_idx = 0; for (int i = 1; i < n; ++i) if (a[i] < a[min_idx]) min_idx = i; int tmp = a[0]; a[0] = a[min_idx]; a[min_idx] = tmp; for (int i = 0; i < n; ++i) { if (i) putchar(' '); printf("%d", a[i]); } putchar('\n'); } return 0; }
scanf 返回值檢查:== 1 確保讀取成功,!= EOF 不足以處理格式錯誤。n < 100)。n == 0。n ≤ 99 極輕量。a[n-1] 交換。n 次即為選擇排序。auto it = min_element(v.begin(), v.end()); swap(v[0], *it);本題考察基本輸入輸出、陣列操作、線性查找與交換邏輯,是 OJ 入門必刷題。掌握「讀取→處理→輸出」標準框架與格式控制技巧,可舉一反三解決大量同類入門題。