在二维数组中查找最小值

时间:2021-04-17 14:49:31

标签: c

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?

2 个答案:

答案 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++)

相关问题