简单代码中的运行时错误(NZEC)

时间:2011-03-25 17:51:17

标签: c# runtime

在SPOJ上运行以下代码时,我收到运行时错误(NZEC)。如果你们中的任何人愿意指出发生了什么,我将非常感激。

//0<=A<=B<=10^18, 1<=N<=10^18
using System;
class any
{
static void Main()
 {
    long t = long.Parse(Console.ReadLine());
    ulong a, b, n;

    for(long k = 0; k < t; k++)
     {
        string[]s = Console.ReadLine().Split(' ');
        a = ulong.Parse(s[0]);
        b = ulong.Parse(s[1]);
        n = ulong.Parse(s[2]);
        Console.WriteLine(diviEntre2(a, b, n));
     }
 }
static ulong diviEntre2(ulong f, ulong c, ulong n)
{
   ulong k, s, m;

    if (f == c && c % n == 0 && f != 0) k = c/n;

    else
     {
      s = f/n;
      m = c/n;

      k = m - s;
     }

  return k;
}
}

6 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:8)

对于Java,当代码抛出异常时返回NZEC。对于Spoj等上的问题,如果测试用例没有被标识符字符串终止,则输入中的最后一行通常会导致此异常。

对于这种情况,一个有用的hack是将你的代码包装在try-catch中,如果有异常就返回。被捕获的异常表示您已达到输入结束。

public static void main(String[] args) {
    temp program = new temp();
    try{
    program.begin();
    } catch(Exception e){
        return;
    }
}

答案 2 :(得分:7)

在java中编程时我有相同的信息。事实证明我应该将我的源代码放在默认包中(或根本不更改包)。我希望这有助于某人。

答案 3 :(得分:2)

我不知道当main函数为void时java会返回什么,但这可能是此错误消息的原因。 Spoj还会检查程序的返回值,它预计为0(成功/非错误代码)。 我想改变你的主函数返回0将修复这个错误信息。

我刚刚在C程序中遇到了同样的错误,并且添加一个返回0会将错误更改为接受。

答案 4 :(得分:1)

此错误也可能意味着程序无法正常工作,即输出不是预期的输出...不管你信不信,这很可能是你的代码没有按照问题要求做的。 ...

从最后给出的链接引用 - &gt;

  

NZEC(非零退出代码) - 帮助告知WA的崩溃   解释语言; WA =错误答案。

请参阅此链接The SPOJ System

答案 5 :(得分:-1)

我在针对问题'EKO'的cpp计划上获得了NZEC。我正在int main()语句之前做一个数组声明。我在主函数中移动了声明,解决方案被接受了。

我通常在main函数之外有数组声明,但在这种情况下,数组很大(int array[100001])。因此可以在main内声明您的数组。