c - 如何用C找到数组中3个最大的偶数?

标签 c arrays loops if-statement

我需要在数组中找到 3 个最大的数字,然后将它们相加。

例如: 输入:3 4 7 10 11 16 16 23 26 输出:3个最大偶数的和是:16,16,26。和是58

在我的代码中,我得到了奇怪的输出,例如“16, 1245782582792, 1”。

注意:我只能使用 ifs/else、for/while 循环和数组。

#include <stdio.h>

最佳答案

这里有一些问题:

  1. 您应该只检查已定义的数组条目。相反,您查看的是整个数组,包括从 nNumbersMAX_NUMBERS-1 的未定义部分。您可能会在那里获得垃圾值。将 for 循环更改为:

    for (i = 0; i < nNumbers; i++)
    
  2. 您正在将 greatest1 等初始化为数组中的第一个数字。如果该数字是奇数并且恰好大到足以阻止您要查找的偶数,则此方法不起作用。

  3. 如果最大偶数之一出现多次,您将忽略重复项。例如,如果最大数字是 1000,并且出现了 3 次,您可能希望将所有三个数字相加并返回 3000。您可以通过跟踪您选择的索引来解决此问题,并且仅在索引匹配时拒绝重复项,而不是值。

关于c - 如何用C找到数组中3个最大的偶数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904154/

相关文章:

Python while循环搜索文件中的最高值

c - 编写一个程序来像 C 中的命令行一样工作

c - 堆栈段 C 数组

javascript - HTTP Request JS - 如何从列表中提取数字,将它们保存到变量中并使用它们进行进一步处理?

c - 程序打印我想要的结果,除了在一个地方我得到的是内存地址而不是地址的值。

java - 合并两个整数数组

python - 创建包含每个独特团队获胜顺序计数器的列表

c++ - 需要对表达式进行解释

c - 为什么我的自动化构建在 Docker 容器中运行如此缓慢?

javascript - 这个for循环应该做什么?