for (cock = 0; cock <= 20; (cock + 1)) // ❌ 無副作用,cock 永遠是 0
for (hen = 0; hen < 34; (hen + 1)) // ❌ 同理
for (poult = 0; poult <= 100; (poult + 3)) // ❌ 同理
cock + 1 只是計算表達式,不賦值回 `cock`。正確寫法:
for (cock = 0; cock <= 20; cock++) // 或 cock += 1
for (hen = 0; hen < 34; hen++)
for (poult = 0; poult <= 100; poult += 3)
#include <stdio.h>
int main() {
int cock, hen, poult;
for (cock = 0; cock <= 20; cock++) {
for (hen = 0; hen < 34; hen++) {
for (poult = 0; poult <= 100; poult += 3) {
if (cock + hen + poult == 100 &&
5 * cock + 3 * hen + poult / 3 == 100) {
printf("cock=%d\nhen=%d\npoult=%d\n\n", cock, hen, poult);
}
}
}
}
return 0;
}
cock=0
hen=25
poult=75
cock=4
hen=18
poult=78
cock=8
hen=11
poult=81
cock=12
hen=4
poult=84
| 平台 | 特點 | 鏈接 |
|---|---|---|
| Codepad | 極簡、支持 C/C++、即時輸出 | codepad.org |
| OnlineGDB | 支持調試、多文件、輸入參數 | onlinegdb.com |
| Compiler Explorer | 查看匯編、多編譯器對比 | godbolt.org |
| Replit | 完整 IDE、持久化、協作 | replit.com |
| Programiz | 教學友好、自動補全 | programiz.com/c-programming/online-compiler |
百元雞問題經典解法:三重循環 + 兩個約束條件,修正循環變量更新即可得到所有整數解。