0

我试图使用数组和函数找到最大值和最小值。我能够获得最大值,但是,最小值没有出现。它给出了一些我认为是 inode 编号的随机数。如何从以下程序中获得最小值?

    #include <stdio.h>
    #include <stdlib.h>
    void get(int array[], int size);
    void print(int array[], int size);
    int max(int array[], int size);
    int min(int array[], int size);
    int main ()
    {
        int max_value, min_value;
        int list[10];
        get(list, 10);
        print(list,10); 
        max_value = max(list, 10);
        min_value = min(list,10);
        printf("The maximum number in the arrays is %d\n", max_value);
        printf("The minimum number in the array is %d\n", min_value);
    }
    void get(int array[], int size)
    {
        int i;
        for (i=0; i<10; i++)
            array[i] = rand();
    }
    void print(int array[], int size)
    {
        int i;
        for (i=0; i<10; i++)
            printf("%d\n", array[i]);
        printf("\n");
    }

    int max(int array[], int size)
    {
        int i,max;
        max=array[0];
        for(i=0; i<10; i++)
            array[i];
        if (array[i]>max)
            max = array[i];
        return max;
    }

    int min(int array[], int size)
    {
        int i, min;
        min = array[0];
        for (i=0; i<10; i++)
            array[i];
        if(array[i]<min)
            min = array[i];
        return min;
    }
4

2 回答 2

2

你的逻辑是错误的。在你的

int min(int array[], int size)
{
int i, min;
min = array[0];
{         /* put brace here */
for (i=0; i<10; i++)
 array[i];
if(array[i]<min)
 min = array[i];
}        /* and close it here */
return min;
}

您将 min 设置为数组的第一个元素。
然后你循环数组什么都不做。然后检查 array[10] < min. 那不会返回最小值。
按照我的评论使其工作。
请记住,循环体由代码块组成。这意味着如果没有{ }它,它会将一条指令视为它在一次迭代中必须做的所有事情。

也可能根本没有指示。只需放在;循环条件之后,您就会得到一个没有任何指令的循环。

此外,您假设您的数组将是 10 项长。如果没有怎么办?为什么不使用size传递给函数的变量来检查数组的结尾?

于 2013-11-01T19:24:12.410 回答
0

查看您的for语句。您需要范围括号。例如

// What is actually done
for( /* params */ )
    // First line is ran
// Line here is not executed by the for-loop

你需要做的是:

// Good for-loop statement
for(int i = 0; i < 10; i++)
{ // SCOPE begin
    /*
        Code executed
    */
 } // loop ended 

由于您在 for 循环之外定义了i,因此它不会向您显示任何错误。但是,它将无法正常工作。

于 2013-11-01T19:28:15.503 回答