#include <stdio.h>
void main() {
int a, n=0, i, j, k, t;
scanf("%d", &a);
for (t=100; t<=999; t++) {
i = t/100;
j = t/10%10;
k = t%10;
if (i+j+k == 7) n++;
if (n == a) printf("%d\n", t);
}
}
輸入 a=1 期望輸出第一個符合條件的數(如 106),實際輸出所有符合條件的數(106, 115, 124...)。
if (n == a) printf(...) 後缺少 break,迴圈繼續跑完 100~999,每次 n==a 成立(因 n 不再遞增)都會輸出。
for (t=100; t<=999; t++) {
i = t/100; j = t/10%10; k = t%10;
if (i+j+k == 7) n++;
if (n == a) {
printf("%d\n", t);
break; // 找到目標立即跳出迴圈
}
}
printf 移至迴圈外,迴圈只負責尋找,找到後 break,迴圈外統一輸出。return t。「找到即停止」的邏輯必須配合 break/return/goto 終止迴圈,否則後續迭代會重複觸發輸出。