C语言中白鸡问题程序错误原因分析

问题描述

我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?

#include 
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

请问为什么会比正确答案多出三个解?不仅要找出错误和修正错误,还要求利用以前学过的知识分析错误的原因。

正确答案

C语言中白鸡问题程序错误原因分析_第1张图片

原因

C语言中白鸡问题程序错误原因分析_第2张图片

原因
  • 小鸡应该是3的倍数,超过100

你可能感兴趣的:(C,C)