scanf("d", &n); // 錯誤:缺少 % 號
"d" 被視為普通字符匹配,而非格式說明符n 未被賦值 (保持未初始化垃圾值)n 執行,結果不可預期scanf("%d", &n); // %d 表示讀取十進制整數
#include <stdio.h>
int main() {
int n, i;
int a[10001] = {0}, b[10001] = {0}, g[10001] = {0}, k[10001] = {0};
int x, y, j, r = -1;
scanf("%d", &n); // 修正:添加 %
for (i = 0; i < n; i++) {
scanf("%d %d %d %d", &a[i], &b[i], &g[i], &k[i]);
}
scanf("%d %d", &x, &y);
for (j = 0; j < n; j++) {
if ((x >= a[j]) && (x <= (a[j] + g[j])) &&
(y >= b[j]) && (y <= (b[j] + k[j]))) {
r = j + 1; // 編號從 1 開始
}
}
printf("%d", r);
return 0;
}
| 格式符 | 含義 | 對應參數類型 |
|---|---|---|
%d / %i | 有符號十進制整數 | int * |
%ld | 長整數 | long * |
%lld | 長長整數 | long long * |
%f | 浮點數 | float * |
%lf | 雙精度浮點數 | double * |
%c | 單個字符 | char * |
%s | 字符串 (遇空白停止) | char * (需預分配空間) |
if (scanf("%d", &n) != 1) { /* 輸入錯誤處理 */ }-Wformat 可檢測格式字符串與參數不匹配一個 % 符號的缺失導致整個程序輸入邏輯失效。scanf 格式字符串必須以 % 開頭表示轉換說明,**細心檢查格式字符串是 C 語言輸入調試的第一步**。