最小的数组值

时间:2013-02-17 18:25:54

标签: c++ arrays function codeblocks minimum

我正在尝试编写一个返回数组最小值的函数。到目前为止,我有这个,但它返回的只是0.

我没看到它会如何返回0,因为我使用for循环遍历数组。也许它不会像我认为的那样循环遍历数组值。任何人都可以详细说明这段代码中的逻辑和谬误吗?

#include <iostream>

using namespace std;

int newArray[9] = {4,5,9,3,6,2,1,7,8};


int minArray()
{
    int index = 1;
    int minimum;

    for (int i = 0; i < 9; i++)
    {
        if (newArray[i] > newArray[index])
        {
            minimum = newArray[index];
        }
        index++;

    }

    return minimum;
}


int main()    
{   
    cout << "original array:\n ";
    for (int i = 0; i < 9; i++)
    {
        cout << newArray[i] << ", ";
    }

    cout << "minimum value of array: ";
    cout << minArray();

    return 0;
}

4 个答案:

答案 0 :(得分:1)

一个好主意可能是使用数组中的元素初始化minimum。 所以:

minimum = newArray[0]

在你的循环中(伪代码假设你不想要答案):

if: newArray[pos] < minimum

        minimum = newArray[pos];

答案 1 :(得分:0)

minimum变量应该最初分配给数组中的值,然后将数组中的每个元素与minimum进行比较。如果小于,请为minimum分配该值:

int minArray()
{
    int minimum = newArray[0];
    int index = 0;

    for (int i = 0; i < 9; i++)
    {
        if (newArray[i] < minimum)
        {
            minimum = newArray[i];
        }
        index++;

    }
  return minimum;
}

答案 2 :(得分:0)

我会做这样的事情:

#include <iostream>

int minArray(int a[], int size) {
    if (size <= 0) return 0; //
    int m = a[0];
    for (int i = 1; i < size; ++i) {
       if (a[i] < m) m = a[i];
    }
    return m;
}

int main() {
    int a[] = { 4, 3, 6, 2 };
    std::cout << minArray(a, 4);
    return 0;
}

答案 3 :(得分:0)

您应该使用某个已知值或最大整数值初始化minimum

int minArray()
{
    int minimum = newArray[0];

    for (int i = 1; i < 9; i++)
    {
        if (minimum > newArray[i])
        {
            minimum = newArray[i];
        }
    }

    return minimum;
}

你错误地使用index(实际上根本不需要它)。可以使用index代替minimum的示例:

int minArray()
{
    int index = 0;

    for (int i = 1; i < 9; i++)
    {
        if (newArray[index] > newArray[i])
        {
            index = i;
        }
    }

    return newArray[index];
}

两个示例都应该可以正常工作,但我建议先使用。