c语言按照要求写为什么还判错

c语言为什么按照要求写还会wrong呀……有什么错误的地方吗

img

img

img

你只满足了题目的测试用例吧

#include <stdio.h>
int main()
{
    int n,m;
    double x,y;
    scanf("%d%d",&n,&m);
    while(n!=0 && m!=0)
    {
        y = (m-2*n)/2.0;
        x = n-y;
        if(y-(int)y<1e-5)
            printf("%.0f %.0f\n",x,y);
        else
            printf("Error\n");
        scanf("%d%d",&n,&m);
    }
    return 0;
}

#include <stdio.h>

int main()
{
    int n, m, x, y;
    while (scanf("%d%d", &n, &m) == 2 && n != 0 && m != 0)
    {
        int a = m - 2 * n;
        if (a <= 0 || a % 2 != 0) {
            printf("Error\n");
            continue;
        }
        y = a / 2;
        x = n - y;
        printf("%d %d\n", x, y);
    }
    return 0;
}

要注意完善细节啊,不止是题目提到的细节,还有本身隐含的细节。
如果是我,我会:
1:头和脚的个数肯定大于0,脚的个数肯定是偶数,先异常 处理。
2:头和脚其实有隐含的关系,脚的个数肯定和头有一定的算法也要满足,不满足就异常处理 比如1个头 10个脚就不合理,要计算做异常处理
3:如果数据范围内正常,那就正常计算了。 涉及除法的时候除数不能为0,计算的时候最好用乘法和减法比除法好(除法除不尽要考虑) 也就是说这里我理解证书能满足条件就不要用float,double之类
至于其他 暂时没有考虑到。。。

解答如下,有帮助请采纳

img

#include <stdio.h>

int main()
{
    int m,n,x,y;
    while(scanf("%d%d",&n,&m)==2&&n!=0&&m!=0)
        if((m-n*2)<=0||(m-n*2)%2!=0)
            printf("Error\n");
        else
            printf("%d %d\n",(m-n*2)/2,n-(m-n*2)/2);
        return 0;
}

鸡兔同笼类问题
编程如下,思路可供参考:

#include<stdio.h>
int main()
{
    int n,a,i;
    long long int m,y=0,x=0;
    while(scanf("%d%lld",&n,&m)!=EOF&& n != 0 && m != 0)
    {
        if(m%2!=0)
        {
            printf("Error\n");
            continue;
        }
        y = m/2-n;
        x = n-y;
        if(x>=0&&y>=0)
        {
            printf("%lld %lld\n",x,y);
        }
        else
        {
            printf("Error\n");
        }
    }
    return 0;
}

测试:

img


如有帮助,还请采纳!


#include<stdio.h>
int main()
{
    int n,a,i;
    long long int m,y=0,x=0;
    while(scanf("%d%lld",&n,&m)!=EOF&& n != 0 && m != 0)
    {
        if(m%2!=0)
        {
            printf("Error\n");
            continue;
        }
        y = m/2-n;
        x = n-y;
        if(x>=0&&y>=0)
        {
            printf("%lld %lld\n",x,y);
        }
        else
        {
            printf("Error\n");
        }
    }
    return 0;
}