鸡兔同笼
时间限制: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前面的“逗号”应该是“分号”?
x = 2 * n - m / 2,y= m / 2 -n;
你确定你是要用“逗号表达式”?y前面的“逗号”应该是“分号”?
#2
还有要先检查m是否为奇数,奇数则无解,另外f (x > 0 && y > 0)都应该是>=
#3
用逗号和分号有什么区别??
#4
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
但是我改了后还是不能通过。。。是不是还有哪里有问题?
#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;
}
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前面的“逗号”应该是“分号”?
x = 2 * n - m / 2,y= m / 2 -n;
你确定你是要用“逗号表达式”?y前面的“逗号”应该是“分号”?
#2
还有要先检查m是否为奇数,奇数则无解,另外f (x > 0 && y > 0)都应该是>=
#3
用逗号和分号有什么区别??
#4
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
但是我改了后还是不能通过。。。是不是还有哪里有问题?
#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;
}
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
整个思路不对,是你在做题还是让计算机来解题?
建议用循环做,再试试吧。
建议用循环做,再试试吧。