是什么原因导致此代码中的运行时错误

时间:2015-06-09 10:47:42

标签: c++ runtime-error

我正在处理UVA问题12468 Zapping

我检查了几个测试用例并且它成功运行但是当我将此解决方案提交给UVA在线判断时,它将其判断为运行时错误。错误在哪里?请解释一下你的答案。

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a,b,next,bk;

    while(true)
    {
        cin >> a >> b;
        if (a == -1 && b == -1)
            break;

        next = abs(a - b);

        if (next > 50)
        {
            bk = (a % b) + 1;

            cout << bk << endl;
        }
        else
        {
            cout << next << endl;
        }
    }

    return 0;
}

1 个答案:

答案 0 :(得分:0)

您的问题实质上是“以下代码如何导致运行时错误”。该问题的答案由πάνταῥεῖ给出,当变量(a%b)+1等于零时,它发生在b行上。

但如果实际问题是“如何更改代码以便根据问题12468描述给出正确的输出”那么答案应该是用以下内容替换该行:

bk = 100 - next;

因此,如果将遥控器从一个方向切换到最大值的一半以上,则会告诉您在相反的方向上将其切换多少。