首页 > 解决方案 > 序列和最大,最小与向量

问题描述

问题是显示该序列的最高和最低数量以及它们出现的次数。我现在需要显示这个序列出现了多少个数字,它们也需要小于 2000:

#include <iostream>
int main()
{
    int v[11], i, b, l;
    for (i = 0; i < 11; i++) {
        scanf("%d", &v[i]);
    }
    b = v[0];
    for (i = 0; i < 11; i++) {
       if (v[i] > b)
            b = v[i];
        i++;
    }
    l = v[0];
    for (i = 0; i < 11; i++) {
        if (v[i] < l)
            l = v[i];
        i++;
    }
    printf("%d\n", b);
    printf("%d\n", l);
    return 0;
}

并查看输入和输出它们应该如何出现

Input:
20
40
39
120
2
200
2
360
780
7
2

Output:
biggest:780 Shows 1 time(s)
lowest:2 Shows 3 time(s)

标签: c++

解决方案


这是最大整数的代码。对最小整数使用类似的方法。

#include <iostream>

int main()
{
    int v[11]; // gets the input array
    for (i = 0; i < 11; i++) {
        scanf("%d", &v[i]);
    }

    int max = 0;
    int count = 0;
    for (int i = 0; i < 11; i++)
    {
        if (v[i] > max)
        {
            max = v[i];
            count = 1;
        } else if (v[i] == max)
        {
            count++;
        }
    }
}

解释

第一个 for 循环从用户那里获取输入。我没有更改这部分代码。

第二个 for 循环是魔法发生的地方。首先,我们定义一个最大值变量和一个计数变量。两个变量都设置为零。

当 for 循环遍历数组时,我们会执行一些 if 语句。首先,我们检查当前元素是否大于我们的最大变量。如果这是真的,我们找到了一个新的最大值变量,所以我们设置 max = 当前元素。我们还将 count 的值更改为 1,因为到目前为止我们只找到了一个新最大值的实例。

我们还检查当前元素是否等于最大值。在这种情况下,我们找到了最大元素的另一个实例,因此我们将 count 加 1。

这是我们必须检查的仅有的两种情况。对最小元素应用类似的逻辑很简单。


推荐阅读