有关鸡兔同笼问题

二拾 2017-11-04 11:32:16
#include<stdio.h>
int main()
{ int n[50],m[50],i=0,j,k;\\j,k为鸡和兔
while(scanf("%d %d"),&n[i],&m[i])
{if(n[i]==0||m[i]==0)
break;
i++;
}
i=0;
while(m[i]!=0&&n[i]!=0)
{ for(j=0;j<=n[i];j++)
{ k=n[i]-j;
if(n[i]==j+k&&m[i]==2*j+4*k)
break;
}
if(n[i]==j+k&&m[i]==2*j+4*k)
printf("%d %d\n",j,j);
else
printf("Error");
i++;
}

return 0;
}
为什么程序仅有一遍输入,而且没结果。
...全文
326 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-11-06
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
    int n[50],m[50],i=0,j,k; //j,k为鸡和兔
    while(2 == scanf("%d %d",&n[i],&m[i]) && i < 50)
    {
        if(n[i] == 0|| m[i] == 0)
            break;
        i++;
    }

    i = 0;
    while (n[i] != 0 || m[i] != 0) {
        for (j = 0; j < n[i]; j++) {
            k = n[i]-j;
            if (n[i] == j + k && m[i] == 2*j+4*k)
                break;
        }
        if(n[i] == j + k && m[i] == 2*j+4*k)
            printf("%d %d\n",j, k);
        else
            printf("Error\n");
	i++;
    }
    return 0;
}
HomerRo 2017-11-04
  • 打赏
  • 举报
回复
有几处错误改正后,如下: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int n[50], m[50], i = 0, j, k; //j,k为鸡和兔 while (i<50) { scanf("%d%d", &n[i], &m[i]); if (n[i] == 0 || m[i] == 0) break; i++; } i = 0; while (i<50) { for (j = 0; j <= n[i]; j++) { k = n[i] - j; if (n[i] == j + k&&m[i] == 2 * j + 4 * k) break; } if (n[i] == j + k&&m[i] == 2 * j + 4 * k) printf("%d %d\n", j, k); else printf("Error"); i++; } return 0; } /* “鸡兔同笼问题”是我国古算书《孙子算经》中著名的数学问题, 其内容是:“今有雉(鸡)兔同笼,上有三十五头,下有九十四足。 问雉兔各几何。” 意思是:有若干只鸡和兔在同个笼子里,从上面数, 有三十五个头;从下面数,有九十四只脚。求笼中各有几只鸡和兔? 《孙子算经》用算术方法来解:脚数的1/2减头数,即94/2-35=12为兔数; 头数减兔数即35-12=23为鸡数。这种解法虽然直接而自然,也很合乎逻辑, 但是却不容易理解。知道孙子是如何解答这个“鸡兔同笼”问题的吗? 原来孙子提出了大胆的设想。他假设砍去每只鸡和每只兔1/2的脚, 则每只鸡就变成了“独脚鸡”,而每只兔就变成了“双脚兔”。 这样,“独脚鸡”和“双脚兔”的脚就由94只变成了47只;而每只“鸡”的 头数与脚数之比变为1:1,每只“兔”的头数与脚数之比变为1:2。由此可知, 有一只“双脚兔”,脚的数量就会比头的数量多1。所以,“独脚鸡”和 “双脚兔”的脚的数量与他们的头的数量之差,就是兔子的只数。 */

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧