練兵區——程式設計題——不計入總分 5
5
程式改錯-1(4分)
題目內容:
我國古代的《張丘建算經》中有這樣一道著名的百雞問題:“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何?”其意為:公雞每隻5元,母雞每隻3元,小雞3只1元。用100元買100只雞,問公雞、母雞和小雞各能買多少隻?目前程式執行結果有誤,請問為什麼會比正確答案多出三個解?不僅要找出錯誤和修正錯誤,還要求利用以前學過的知識分析錯誤的原因。
- #include <stdio.h>
- int main()
- {
- int x, y, z;
- for (x=0; x<=20; x++)
- {
- for (y=0; y<=33; y++)
- {
- z = 100 - x - y;
- if (5*x + 3*y + z/3 == 100)
- {
- printf("x=%d, y=%d, z=%d\n", x, y, z);
- }
- }
- }
- return 0;
- }
程式目前的執行結果:
x=0, y=25, z=75
x=3, y=20, z=77
x=4, y=18, z=78
x=7, y=13, z=80
x=8, y=11, z=81
x=11, y=6, z=83
x=12, y=4, z=84
程式正確的執行結果:
x=0, y=25, z=75
x=4, y=18, z=78
x=8, y=11, z=81
x=12, y=4, z=84
輸入格式: 無
輸出格式:
"x=%d, y=%d, z=%d\n
為避免出現格式錯誤,請直接拷貝貼上題目中給的格式字串和提示資訊到你的程式中。
時間限制:500ms記憶體限制:32000kb
#include <stdio.h> #include <stdlib.h> int main() { int z,x,c; for (z=0; z<=20; z++) { for (x=0; x<=33; x++) { for (c=0; c<=100; c++) { if (5*z+3*x+(float)c/3==100&&z+x+c==100) printf ("x=%d, y=%d, z=%d\n",z,x,c); } }
} return 0; }