1. 程式人生 > >練兵區——程式設計題——不計入總分 5

練兵區——程式設計題——不計入總分 5

5

程式改錯-1(4分)

題目內容:

我國古代的《張丘建算經》中有這樣一道著名的百雞問題:“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何?”其意為:公雞每隻5元,母雞每隻3元,小雞3只1元。用100元買100只雞,問公雞、母雞和小雞各能買多少隻?目前程式執行結果有誤,請問為什麼會比正確答案多出三個解?不僅要找出錯誤和修正錯誤,還要求利用以前學過的知識分析錯誤的原因。

  1. #include <stdio.h>
  2.   int main()
  3.   {
  4.       int x, y, z;
  5.       for (x=0; x<=20; x++)
  6.       {
  7.           for (y=0; y<=33; y++)
  8.           {
  9.               z = 100 - x - y;
  10.               if (5*x + 3*y + z/3 == 100)
  11.               {
  12.                   printf("x=%d, y=%d, z=%d\n", x, y, z);
  13.               }
  14.           }
  15.       }
  16.       return 0;
  17.   }

程式目前的執行結果:

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; }