【问题标题】:Why am I not getting the minimum from the following program(using functions and arrays)为什么我没有从以下程序中获得最小值(使用函数和数组)
【发布时间】:2013-11-13 01:45:04
【问题描述】:

我试图使用数组和函数找到最大值和最小值。我能够获得最大值,但是,最小值并没有出现。它给出了一些我认为是 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;
    }

【问题讨论】:

  • 哦,修复缩进让问题显而易见。我应该说对不起吗?

标签: c arrays function


【解决方案1】:

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

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] 跟随我的 cmets 使其工作。
请记住,循环体由代码块组成。这意味着如果没有{ },它会将一条指令视为它在一次迭代中必须执行的所有操作。

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

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

【讨论】:

    【解决方案2】:

    查看您的 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,因此它不会显示任何错误。但是,它不会正常工作。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 2017-08-22
      • 2014-08-07
      • 2013-12-10
      • 1970-01-01
      • 2016-08-12
      • 2011-10-24
      • 1970-01-01
      相关资源
      最近更新 更多