輸入 10 個整數,按升序排序後輸出。
#include
int main() {
int a[10]; // 定義長度為 10 的整型數組
int i, j, temp; // 循環變量、臨時交換變量
// 1. 輸入階段
printf("請輸入 10 個整數,用空格或換行分隔:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]); // 逐個讀取並存入數組
}
// 2. 排序階段:冒泡排序
// 外層控制趟數,共需 9 趟
for (j = 0; j < 9; j++) {
// 內層進行相鄰元素比較交換,每趟將最大值「冒泡」到末尾
for (i = 0; i < 9 - j; i++) {
if (a[i] > a[i + 1]) { // 升序:前大於後則交換
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
// 3. 輸出階段
printf("排序結果(升序):\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
int a[10]; 分配連續 10 個 int 空間,下標 0~9。a[i] 表示第 i+1 個元素,&a[i] 取其地址供 scanf 寫入。n-1 趟,內層每趟遞減一次比較次數。| 錯誤 | 正確做法 |
|---|---|
scanf("%d,", &a[i]); 格式串帶逗號 | scanf("%d", &a[i]); 不要額外字符 |
數組越界訪問 a[10] | 下標範圍 0~9 |
| 排序循環條件寫錯 | 外層 i < n-1,內層 j < n-1-i |