int max = 0, min = 0; // 錯誤初始化
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
scanf("%d", &a[i][j]);
if (min > a[i][j]) { min = a[i][j]; min_i = i; min_j = j; }
if (max < a[i][j]) { max = a[i][j]; max_i = i; max_j = j; }
}
}
將 max 和 min 初始化為 0 導致:
min 永遠為 0(實際最小值 > 0)max 永遠為 0(實際最大值 < 0)// 讀取第一個元素後初始化
scanf("%d", &a[0][0]);
int max = a[0][0], min = a[0][0];
int max_i = 0, max_j = 0, min_i = 0, min_j = 0;
// 從第二個元素開始比較
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (i == 0 && j == 0) continue; // 跳過第一個
scanf("%d", &a[i][j]);
if (a[i][j] > max) { max = a[i][j]; max_i = i; max_j = j; }
if (a[i][j] < min) { min = a[i][j]; min_i = i; min_j = j; }
}
}
bool first = true;
for (...) {
for (...) {
scanf("%d", &val);
if (first) {
max = min = val;
max_i = min_i = i;
max_j = min_j = j;
first = false;
} else {
if (val > max) { max = val; max_i = i; max_j = j; }
if (val < min) { min = val; min_i = i; min_j = j; }
}
}
}