【发布时间】:2017-04-30 16:41:04
【问题描述】:
这是我对 C++ 课程的介绍。我们目前正在做数组,我正在尝试找到数组每一列的最小值。这是我所拥有的:
#include <iostream>
using namespace std;
int main(){
int grade[4][30] = {{76, 70, 80, 90, 100, 83, 61, 63, 64, 65, 97, 69, 70, 79,60, 70, 80, 90, 100, 83, 61, 63, 99, 98, 66, 69, 70, 79},
{74, 70, 80, 90,60, 61, 93, 88, 73, 65, 91, 69, 70, 79, 60, 70, 80, 90, 60, 83, 61, 63, 64, 65, 66, 69, 67, 74},
{72, 70, 80, 90, 99, 84, 62, 63, 99, 65, 66, 69, 70, 79, 60, 70, 80, 90, 99, 83, 61, 63, 64, 65, 66, 69, 70, 77},
{69, 70, 80, 90, 60, 61, 86, 63, 97, 97, 66, 69, 70, 79, 97, 70, 80, 90, 88, 83, 88, 63, 64, 65, 66, 69, 70, 79}};
int a;
for(int x = 0; x < 4; ++x){
a = grade[x][0];
for(int y = 0; y < 30; ++y){
if( a > grade[x][y])
a = grade[x][y];
cout << "a is " << a << " for the " << y << "time" << endl;}
cout << a << endl;}
return 0;
}
我的问题是我不明白为什么在最后两个循环中值变为 0?真正的答案应该是每行 60。
P.S 我用它来找到最大值并且它起作用了,但是不明白为什么它在这里不起作用?
【问题讨论】:
-
写一个找到一维数组最小值的函数,然后使用该函数解决二维数组的问题怎么样?编程就是写函数。
-
这是您找到最小值的代码吗?如果没有,请改为包含它,因为这看起来是为了找到最大值。我也同意@NeilButterworth 的观点,即查找一维结果的函数会很有用
-
@Graeme:它的写法有误导性,但这实际上是在寻找最小值。不过,如果他将比较与
if (grade[x][y] < a) a = grade[x][y];颠倒过来,可能会更明显。 -
@JerryCoffin 啊,是的,我现在看到了。嗬!大脑似乎睡着了
-
@Graeme:如果有什么安慰的话,我已经准备好了答案,因为几分钟前,我开始写几乎相同的评论。