执行此代码时,为什么会得到不同的输出:
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()函数,但我不确定
答案 0 :(得分:0)
更多解释会有所帮助。你想要实现什么(特别是使用奇数/偶数逻辑?你期望第一次运行会返回什么?
无论如何,对于第一次运行,min()首先返回2然后3.从总金额(15)中减去10给出。
我敢打赌min函数应该只返回最小的奇数,但是当数组中的第一个数字是最小数时,即使它是偶数也会返回。但正如我所说,如果没有有意义的函数名称或更多解释,很难看到此代码的目标。我希望这会有所帮助:)