查找数组中的最大数字

时间:2014-08-11 15:48:11

标签: c++ arrays

有人可以告诉我我的节目有什么问题吗?我的程序应该找到int i[]中的最大值,但是当我运行它时,它会要求我输入11个数字,而是显示11个数字中最大的数字。

#include<stdio.h>
void main(void)
{
    int i[] =
    {
        88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85, //bus 8
        98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89, //bus15
        88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85, //22
        98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89, //23
    };
    int j;
    int number,largest;
    largest=0;
    for(j=0;j<11;j++)
    {
        scanf_s("%d",&number);
        if(number>largest)largest=number;
    }
    printf("Largest=%d\n",largest);
}

如何调整程序以便在int i[]中找到最大值?

3 个答案:

答案 0 :(得分:9)

尝试使用std::max_element中的<algorithm>

#include <algorithm>

int i[] = { 1, 84, 11, 31 };

// for C++11 and later:
int max = *std::max_element(std::begin(i), std::end(i));

// for C++03 or earlier:
int max2 = *std::max_element(i, i + (sizeof(i) / sizeof(*i)));

或者如果您的数组是静态的,您只需使用C ++ 11初始化列表:

auto i = { 1, 84, 11, 31 };
int max = std::max(i);
int max2 = std::max({ 1, 84, 11, 31 });

PS:可以找到使用这些方法的实际示例here

答案 1 :(得分:4)

<algorithm>中的

std::cout << *std::max_element(std::begin(i), std::end(i)) << std::endl;

Live example

或者如果您使用initializer_list来包含您的号码,则可以直接使用std::max

auto i =
{
    88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85,
    98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89,
    88, 67, 90, 12, 34, 65, 100, 78, 56, 77, 85,
    98, 34, 67, 98, 67, 45, 67, 23, 45, 67, 89,
};
std::cout << std::max(i) << std::endl;

Live example

答案 2 :(得分:1)

你必须初始化数字,最大值为0;

number = 0;
largest = 0;

或者它将是一个随机数字保存在内存中。

int largerst = 0;

for(int j=0;j < sizeof i;j++) {
if (i[j] > largest) largest = i[j];
}
cout << largest << endl;