int main (void) {
const int table[a][b]={{4,2,7},{6,-8,-13}};
int minvals[a];
int i, j;
int min = table[0][0];
for (int i = 0; i < a; i++)
{
for (int j = 0; j < a; j++)
{
if (table[i][j] < min){
min = table[i][j];
printf("The row's lowest value is %d\n", min);
}
}
}
return (0);
}
当我运行我的代码时,我试图找到每个数组中的最小值我得到 2 和 -8 而不是 -13 有谁知道为什么它会提供 -8 而不是 -13?
答案 0 :(得分:1)
你的代码内部循环只迭代到 a-1,但应该直到 b-1。
由于 a 是 2 并且 b 是 3,所以内部循环太短,从不检查 7 和 -13。虽然忽略 7 很好,但忽略 -13 会导致您的问题。
无论 a 和 b 用作定义(未显示),我的猜测应该足以将其命名为问题的核心。
即
for (int j = 0; j < a; j++)
->
for (int j = 0; j < b; j++)
还有另一个问题,“幸运的是”隐藏在第二个集合最小值低于第一个集合的事实中(有和没有上面提到的错误)。
当您想重置 min
时,请仔细检查。我猜您想在内循环之外执行此操作,但要在外循环内执行。
答案 1 :(得分:0)
您的第二个循环 for (int j = 0; j < a; j++)
中有一个拼写错误,将 a
替换为 b
,您应该让它工作,它会像这样 for (int j = 0; j < b; j++)
。