在数组中寻找最大值

5

如果我有一个数组,例如:

10, 4, 7, 8

其中最大元素的值为

10

我该如何找到这个值?


以下是我的尝试:

int highNum = 0;
int m;
int list[4] = {10, 4, 7, 8};
    for (m = 0 ; m < size ; m++);
    {
        if (list[m] > highNum)
            highNum = list[m];
            cout << list[m];
    }
cout << highNum;

我正在尝试编写一个简单的循环来存储数组中的最大值,我写了下面这段代码,本以为它能正常工作,但是在for循环的开始处,它会将m变量存储为4并退出循环。


“size”是什么?你设置为4了吗?此外,你的缩进有误导性,你在循环的每个过程中都使用“cout << list [m];” - B. Decoster
1
尝试对所有if语句使用大括号,即使是微不足道的。这样可以更容易地维护代码,以便在将来添加额外行时,不会意外地将其添加到if语句的范围之外。 - K Mehta
5个回答

27

除非你正在完成作业且必须编写循环,否则只需使用std::max_element,如:

int list[4] = {10, 4, 7, 8};
std::cout << *std::max_element(list, list+4);

...或者更好的方法是避免硬编码长度:

int list[] = {10, 4, 7, 8};
std::cout << *std::max_element(std::begin(list), std::end(list));

4
int highNum = 0;
int m;
int list[4] = {10, 4, 7, 8};
    for (m = 0 ; m < size ; m++);    // <-- semicolon?
    {
        if (list[m] > highNum)
            highNum = list[m];
            cout << list[m];
    }
cout << highNum;

从您的缩进来看,您可能错过了{} 的一对括号,这也影响了if语句。


4

你的 for 语句后面有一个分号:

for (m = 0 ; m < size ; m++);
{

这应该是:

for (m = 0 ; m < size ; m++)
{

1
在你的for循环的右括号后面有一个分号;for (m = 0 ; m < size ; m++); 块内的语句(花括号内部)仅在循环size次后执行什么也不做,而且只执行一次。
你还错过了if语句的一对{ ... }

0
你在这段代码最后多了一个无用的分号;
for (m = 0 ; m < size ; m++);

编辑:工作代码加上了一些额外的<<endl;

int size = 4;
int highNum = 0;
int m;
int list[4] = {10, 4, 7, 8};
for (m = 0 ; m < size ; m++)
{
    if (list[m] > highNum)
        highNum = list[m];
    cout << list[m] << endl;
}
cout << highNum << endl;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接