C语言鸡兔同笼问题,新手求助!!

时间:2022-01-03 11:23:24

鸡兔同笼

 时间限制:3000 ms  |  内存限制:65535 KB 

描述 已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。
输入第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)
 a行里,每行都有一个n和m.(0<m,n<100)输出输出鸡兔的个数,或者No answer

根据题目,我自己写了个代码:
#include <stdio.h>
int main (void)
{
  int x,y,n,m,a;
  scanf ("%d",&a);
  while (scanf ("%d %d",&n,&m)!=EOF){
  if (m > 0 && n < 100){
      x = 2 * n - m / 2,y= m / 2 -n; 
  }
  if (x > 0 && y > 0){
  printf ("%d %d\n",x,y);
  }
  else 
    printf ("No answer\n");
  
  }

  return 0;
}

但一直无法通过系统的习题自动检测系统,我想知道我哪里写得不够标准,请高手们帮忙指正,谢谢!!!

8 个解决方案

#1


if (m > 0 && n < 100){
  x = 2 * n - m / 2,y= m / 2 -n;  
你确定你是要用“逗号表达式”?y前面的“逗号”应该是“分号”?

#2


还有要先检查m是否为奇数,奇数则无解,另外f (x > 0 && y > 0)都应该是>=

#3


用逗号和分号有什么区别??

#4


引用 3 楼  的回复:
用逗号和分号有什么区别??

x = 2 * n - m / 2,y= m / 2 -n;

如果是分号的话:
x的值是2 * n - m / 2
y的值是y= m / 2 -n

如果是逗号的话:
y的值是 m / 2 -n
x的值也是m / 2 -n



#5


引用 4 楼  的回复:
引用 3 楼  的回复:
用逗号和分号有什么区别??

x = 2 * n - m / 2,y= m / 2 -n;

如果是分号的话:
x的值是2 * n - m / 2
y的值是y= m / 2 -n

如果是逗号的话:
y的值是 m / 2 -n
x的值也是m / 2 -n
但是我改了后还是不能通过。。。是不是还有哪里有问题?

#6


求修改后的代码 谢谢 急用

#7


#include <stdio.h>
int main (void)
{
  int x,y,n,m,a;
  scanf ("%d",&a);     //这个a是让你用来控制循环次数的,你没有利用
  while (scanf ("%d %d",&n,&m)!=EOF){     //你的这个循环,每次用来输入一对数,并解一对数
if (m > 0 && n < 100){
  x = 2 * n - m / 2,y= m / 2 -n;  
}
if (x > 0 && y > 0){               //循环结束后才输出一对数,符合题目要求吗?
printf ("%d %d\n",x,y);
}
else  
  printf ("No answer\n");
   
  }
                                  //你使用while循环,不如用for循环----因为循环次数a已知
  return 0;
}

#8


整个思路不对,是你在做题还是让计算机来解题?
建议用循环做,再试试吧。

#1


if (m > 0 && n < 100){
  x = 2 * n - m / 2,y= m / 2 -n;  
你确定你是要用“逗号表达式”?y前面的“逗号”应该是“分号”?

#2


还有要先检查m是否为奇数,奇数则无解,另外f (x > 0 && y > 0)都应该是>=

#3


用逗号和分号有什么区别??

#4


引用 3 楼  的回复:
用逗号和分号有什么区别??

x = 2 * n - m / 2,y= m / 2 -n;

如果是分号的话:
x的值是2 * n - m / 2
y的值是y= m / 2 -n

如果是逗号的话:
y的值是 m / 2 -n
x的值也是m / 2 -n



#5


引用 4 楼  的回复:
引用 3 楼  的回复:
用逗号和分号有什么区别??

x = 2 * n - m / 2,y= m / 2 -n;

如果是分号的话:
x的值是2 * n - m / 2
y的值是y= m / 2 -n

如果是逗号的话:
y的值是 m / 2 -n
x的值也是m / 2 -n
但是我改了后还是不能通过。。。是不是还有哪里有问题?

#6


求修改后的代码 谢谢 急用

#7


#include <stdio.h>
int main (void)
{
  int x,y,n,m,a;
  scanf ("%d",&a);     //这个a是让你用来控制循环次数的,你没有利用
  while (scanf ("%d %d",&n,&m)!=EOF){     //你的这个循环,每次用来输入一对数,并解一对数
if (m > 0 && n < 100){
  x = 2 * n - m / 2,y= m / 2 -n;  
}
if (x > 0 && y > 0){               //循环结束后才输出一对数,符合题目要求吗?
printf ("%d %d\n",x,y);
}
else  
  printf ("No answer\n");
   
  }
                                  //你使用while循环,不如用for循环----因为循环次数a已知
  return 0;
}

#8


整个思路不对,是你在做题还是让计算机来解题?
建议用循环做,再试试吧。