int a[5], i, x, t;
for (i = 1; i <= 5; i++) { // 錯誤1:下標從 1 開始
scanf("%d", &a[i]);
}
scanf("%d", &x);
for (i = 1; i <= 5; i++) {
if (a[i] == x) {
printf("找到,下標 %d\n", i);
} else {
printf("不存在\n"); // 錯誤2:每次不匹配就輸出
}
}
0~4。for(i=1; i<=5; i++) 導致:a[0] 永遠不被賦值/檢查(漏檢第一個元素)。a[5] 寫入/讀取越界,行為未定義(可能覆蓋其他變量、程序崩潰)。int a[5], i, x;
int found = 0; // 標誌位,0=未找到,1=找到
for (i = 0; i < 5; i++) { // 正確:0~4
scanf("%d", &a[i]);
}
scanf("%d", &x);
for (i = 0; i < 5; i++) {
if (a[i] == x) {
printf("找到,下標 %d\n", i);
found = 1;
break; // 找到即可退出,若需找所有位置則去掉 break
}
}
if (!found) {
printf("不存在\n");
}
// 返回找到的下標,-1 表示不存在
int findIndex(const int *arr, int len, int target) {
for (int i = 0; i < len; i++) {
if (arr[i] == target) return i;
}
return -1;
}
// main 中調用
int idx = findIndex(a, 5, x);
if (idx >= 0) printf("找到,下標 %d\n", idx);
else printf("不存在\n");
這兩個錯誤是 C 語言初學者的「必經之路」,改正後代碼即刻變得健壯、專業。