一道类似鸡兔同笼的C语言程序题, n个头和m只脚。请你帮他写个程序计算一下一共有多少只鸽子和兔子。

#include<stdio.h>int main(){ int dove,rabbit,flag=0; int head,feet,df,rf; //df表示鸽子的脚的数量,rf表示兔子的教的数量 while(scanf("%d %d",&head,&feet),head,feet) { dove=0;rabbit=0; for(dove=0;(dove<=head)&&(dove<=feet/2)&&(head-dove>=0);dove++) { df=2*dove; rf=feet-df; rabbit=rf/4; if((rf%4==0)&&(rabbit+dove==head)) {flag=1;break;} } if(flag==1) printf("%d %d\n",dove,rabbit); else printf("error\n"); dove=0;rabbit=0; } return 0;}我想问为什么我用这个循环程序但是先输入35 94这组数据再输入1 3这组数据,1 3的结果不是error而是2 0;当我先输入1 3数据时,出来的结果就是我想要的error。这跟输入顺序还有关吗

先输入后输入不一致的问题,是flag没有及时归零导致的。

......
int dove,rabbit,flag;//flag不要赋值,将=0去掉
int head,feet,df,rf;
while(scanf("%d %d",&head,&feet),head,feet)
{
flag=0;//循环体内一开始给flag赋值0
dove=0;rabbit=0;
for(dove=0;(dove<=head)&&(dove<=feet/2)&&(head-dove>=0);dove++)
......

温馨提示:答案为网友推荐,仅供参考