同一组输入数据的输出不同,但顺序不同

时间:2015-09-29 10:57:30

标签: c++ visual-studio console-application

执行此代码时,为什么会得到不同的输出:

int n;
int b[99];
int money = 0;

int min()
{
    int min = b[0];
    int index = 0;
    for (int i = 1; i < n; i++)
        if (b[i] < min && b[i] % 2 != 0) {
            min = b[i];
            index = i;
        }
    for (int i = index; i < n - 1; i++)
    {
        b[i] = b[i + 1];
    }
    b[n - 1] = 0;
    return min;
}

int main()
{
    money = 0;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> b[i];
        money += b[i];
    }
    while (money % 2 != 0)
    {
        money -= min();
    }
    if (money % 2 == 0)
        if (money != 0)
            cout << money;
        else cout << "NIESTETY";


        system("pause");
}

输入= 2 4 3 3 3; output = 10 //不正确

输入= 4 2 3 3 3;输出= 12 //正确

是什么造成的?我认为它可能是min()函数,但我不确定

1 个答案:

答案 0 :(得分:0)

更多解释会有所帮助。你想要实现什么(特别是使用奇数/偶数逻辑?你期望第一次运行会返回什么?

无论如何,对于第一次运行,min()首先返回2然后3.从总金额(15)中减去10给出。

我敢打赌min函数应该只返回最小的奇数,但是当数组中的第一个数字是最小数时,即使它是偶数也会返回。但正如我所说,如果没有有意义的函数名称或更多解释,很难看到此代码的目标。我希望这会有所帮助:)