Email⊕ 发表于 2021-7-3 21:07

C语言求助,百元买百鸡问题

这是我的代码
/*
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
*/
#include <stdio.h>
int main()
{
    int i, j, k;
    for (i = 0; i <= 20; i++)
    for (j = 0; j <= 33; j++)
    for (k = 3; k <= 99; k++)
    if(5*j+3*j+k/3==100)
    if (i+j+k==100)
    if(k%3==0)
    printf("公鸡%d 母鸡%d 小鸡%d", i, j, k);
    return 0;
}

下面是网上的代码
#include <stdio.h>
int main()
{
    int cock,hen,chick;   /*定义变童为基本整型*/
    for(cock=0;cock<=20;cock++)   /*公鸡范围在 0~20 之间*/
    for(hen=0;hen<=33;hen++)   /*母鸡范围在 0~33 之间*/
    for(chick=3;chick<=99;chick++)   /*小鸡范围在 3~99 之间*/
    if(5*cock+3*hen+chick/3==100)   /*判断钱数是否等于 100*/
    if(cock+hen+chick==100)   /*判断购买的鸡数是否等于 100*/
    if(chick%3==0)   /*判断小鸡数是否能被 3 整除*/
    printf("公鸡:%d,母鸡:%d,小鸡:%d\n",cock,hen,chick);
    return 0;
}
我感觉我的代码跟网上的代码已经一样了,为什么运行结果不一样?

苏紫方璇 发表于 2021-7-3 23:34

if(5j+3j+k/3==100)   改成if(5i+3j+k/3==100)

pdln 发表于 2021-7-4 00:22

" if(5j+3j+k/3==100)",i是5元的鸡,你把变量搞错了
k++改成k+3也行,就不用最后去判断了,少行代码

tester001 发表于 2021-7-4 11:35

int main()
{
int i, j, k;
for (i = 0; i <= 20; i++)
for (j = 0; j <= 33; j++)
for (k = 3; k <= 99; k++)
if(5i+3j+k/3==100)
if (i+j+k==100)
if(k%3==0)
printf("公鸡%d ,母鸡%d ,小鸡%d", i, j, k);
return 0;
}

tester001 发表于 2021-7-4 11:36

第一个if语句那里出错了,把第一个j改成i就行了

Email⊕ 发表于 2021-7-5 16:40

苏紫方璇 发表于 2021-7-3 23:34
if(5j+3j+k/3==100)   改成if(5i+3j+k/3==100)

非常感谢

Email⊕ 发表于 2021-7-5 16:41

pdln 发表于 2021-7-4 00:22
" if(5j+3j+k/3==100)",i是5元的鸡,你把变量搞错了
k++改成k+3也行,就不用最后去判断了,少行代码

非常感谢

Email⊕ 发表于 2021-7-5 16:41

tester001 发表于 2021-7-4 11:36
第一个if语句那里出错了,把第一个j改成i就行了

非常感谢

jjyywg 发表于 2021-7-8 15:09

这个不错用来解题。
页: [1]
查看完整版本: C语言求助,百元买百鸡问题