在此代码中导致运行时错误的原因

What causes a runtime error in this code

本文关键字:运行时错误 代码      更新时间:2023-10-16

我正在研究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;
}

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

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

bk = 100 - next;

如果在一个方向上击打遥控器需要超过最大值的一半这告诉你在相反方向上击打它需要多少