C 代码输出不同的东西

C 代码输出不同的东西,c,C,我有以下代码 代码块输出以下输入的NO,但代码强制输出YES 对于以下输入: 1500 1 2 3,右侧输出为NO(在代码块中正确),但它使用Codeforces“编译器”(也称为自定义调用)输出YES 我什么都试过了,我的想法都没有了 #include <stdio.h> #include <string.h> int main() { int andrewGrapes, dmitryGrapes, michalGrapes; int greenGrapes, pur

我有以下代码

代码块输出以下输入的
NO
,但代码强制输出
YES

对于以下输入:

1500 1 2 3
,右侧输出为
NO
(在代码块中正确),但它使用Codeforces“编译器”(也称为自定义调用)输出
YES

我什么都试过了,我的想法都没有了

#include <stdio.h>
#include <string.h>

int main()
{
int andrewGrapes, dmitryGrapes, michalGrapes;
int greenGrapes, purpleGrapes, blackGrapes;
int andrewCheck, dmitryCheck, michalCheck;

// how many grapes they want to eat
scanf("%d", &andrewGrapes); // green grapes only
scanf("%d", &dmitryGrapes); // purple and green
scanf("%d", &michalGrapes); // any grapes

// number of grapes
scanf("%d", &greenGrapes);
scanf("%d", &purpleGrapes);
scanf("%d", &blackGrapes);

if (greenGrapes >= andrewGrapes)
{
    andrewCheck = 1;
    greenGrapes = greenGrapes - andrewGrapes;
}

if (greenGrapes + purpleGrapes >= dmitryGrapes)
{
    greenGrapes = greenGrapes - dmitryGrapes;
    purpleGrapes = purpleGrapes - dmitryGrapes;

    dmitryCheck = 1;
}

//if (greenGrapes + purpleGrapes + blackGrapes >= michalGrapes)
  //  michalCheck = 1;

if (andrewCheck == 1)
{
    if (dmitryCheck == 1)
    printf("YES");
}   else printf("NO");

return 0;
}
#包括
#包括
int main()
{
int Andrewglapes、Dmitryglapes、michalGrapes;
int绿葡萄、紫葡萄、黑葡萄;
int ANDERWCHECK、dmitryCheck、michalCheck;
//他们想吃多少葡萄
scanf(“%d”&andrewglapes);//仅限绿色葡萄
scanf(“%d”,&dmitrygrops);//紫色和绿色
scanf(“%d”,&michalGrapes);//有葡萄吗
//葡萄数
scanf(“%d”和绿色葡萄);
scanf(“%d”和purplegraps);
scanf(“%d”和黑葡萄);
如果(绿葡萄>=andrewGrapes)
{
andrewCheck=1;
绿葡萄=绿葡萄-甘蓝型油菜;
}
if(绿葡萄+紫葡萄>=DmitryGrops)
{
绿葡萄=绿葡萄-DmitryGlapes;
紫色油菜=紫色油菜-dmitryGrapes;
dmitryCheck=1;
}
//if(绿葡萄+紫葡萄+黑葡萄>=michalGrapes)
//michalCheck=1;
如果(andrewCheck==1)
{
如果(dmitryCheck==1)
printf(“是”);
}else printf(“否”);
返回0;
}

您没有初始化变量,因此最初它们包含随机伪值。 这对于
andregGraps
dmitryGraps
michalGrapes
greenGrapes
purpleGrapes
blackGrapes
都不是问题,因为它们都会被
scanf
分配一个值(假设每个调用都成功)

但是,
andrewCheck
仅在
if(greenGrapes>=andrewGrapes)
为真时才会被赋值<代码>dmitryCheck仅在(绿葡萄+紫葡萄>=DmitryGrops)为真时才会被赋值


如果任何一个或两个条件都不成立,则相应的变量将保留其随机伪值,当您继续测试这些变量时,结果将是这样。

dmitryCheck
从未为您的给定输入分配值。另请参见:
michalCheck
根本不使用,也不需要
#include
。您还应该验证每个用户输入函数的返回。(并初始化所有变量)