首页 > 解决方案 > CodeChef 运行时错误“NZEC”问题“疫苗生产”(C 语言)

问题描述

我正在尝试使用 C 语言解决这个初学者问题: https ://www.codechef.com/problems/VACCINE1

您能否给我一个提示,说明下面的代码有什么问题?我收到运行时错误“NZEC”。

我怀疑这是枚举的问题,所以我用 in 变量替换了它,但问题并没有消失。

这是 CodeChef 页面中的解决方案代码(如果您喜欢这样查看): https ://www.codechef.com/viewsolution/40469687

我在 Visual Studio 的 C++ 项目中运行它。它在 Visual Studio 中正常运行,并且输出与问题陈述中的给定输出相匹配。

这是我的代码:

#include <stdio.h>

void main(void)
{
    enum productionStatus {
        CompanyA,
        CompanyB,
        BothCompanies
    } companyProducing;

    short int D1, V1, D2, V2, P, d = 0, day = 0, dayProductionStarts = 0, vaccineNo = 0;
    scanf("%hd %hd %hd %hd %hd", &D1, &V1, &D2, &V2, &P);

    if (D1 < D2) {
        companyProducing = CompanyA;
        day = D1;
    } else if (D1 > D2) {
        companyProducing = CompanyB;
        day = D2;
    } else {
        companyProducing = BothCompanies;
        day = D1;
    }

    if (companyProducing == CompanyA) {
        while (1) {
            vaccineNo += V1;
            if (vaccineNo >= P) {
                d = day;
                break;
            }
            if (day == D2) {
                companyProducing = BothCompanies;
                break;
            }
            day++;
        }
    }

    if (companyProducing == CompanyB) {
        while (1) {
            vaccineNo += V2;
            if (vaccineNo >= P) {
                d = day;
                break;
            }
            if (day == D1) {
                companyProducing = BothCompanies;
                break;
            }
            day++;
        }
    }

    if (companyProducing == BothCompanies) {
        while (1) {
            vaccineNo += (V1 + V2);
            if (vaccineNo >= P) {
                d = day;
                break;
            }
            day++;
        }
    }

    printf("%hd\n", d);
}

标签: c

解决方案


来自Codechef 常见问题

NZEC 代表非零退出代码。对于 C 用户,如果您的 main 方法没有返回 0,则会生成此信息;陈述。如果抛出异常,其他语言(如 Java/C++)可能会生成此错误。

正如MM在评论中指出的那样,最后void main()改为int main()return 0


推荐阅读