This question was migrated from Software Engineering Stack Exchange because it can be answered on Stack Overflow. Migrated四年前。Learn more
我能知道为什么int count, biggest = -12000;?为什么一定要-12000我不明白这句话biggest = -12000
如果我输入biggest = 10000,它仍然可以编译。感谢您的建议,因为我目前正在学习c编程。你能尽可能清楚地理解吗?提前谢谢!
#include <stdio.h>

#define MAX 10

int array[MAX], count;

int largest(int x[], int y);

int main()
{
    /* Input MAX values from the keyboard. */

    for (count = 0; count < MAX; count++)
    {
        printf("\nEnter an integer value:\n ");
        scanf_s("&d", &array[count]);
    }

    /* Call the function and display the return value. */
    printf("\n\nLargest value = %d\n", largest(array, MAX));

    return 0;
}

/* Function largest() returns the largest value in an integer array */

int largest(int x[], int y)
{
    int count, biggest = -12000;

    for (count = 0; count < y; count++)
    {
        if (x[count] > biggest)
            biggest = x[count];
    }

    getchar();

    return biggest;

}

最佳答案

如果要在数组中找到最大的数字,可以将所有元素与当前的“最大”值进行比较。每当你发现一个较大的值,你就把它放到biggest中。
要确保找到正确的值,必须将biggest初始化为合理的值。
您的代码将biggest初始化为-12000,因此如果数组中的所有元素的值都小于-12000,它将失败(除非您知道数组中的值,但随后应该在注释中提到这些值,以解释异常的初始化值)。
当然它会编译,但这并不意味着它会正常工作。
您可以将biggest初始化为尽可能低的整数值(INT_MIN),

int largest(int x[], int y)
{
    int count, biggest = INT_MIN; // lowest integer value possible

    for (count = 0; count < y; count++)
    {

但是一个聪明的技巧是将它初始化为数组中的第一个值。
int largest(int x[], int y)
{
    int count, biggest = x[0]; // first value in your array

    for (count = 1; count < y; count++) // starting with 2nd element
    {

您可以在一张纸上用3个数组值来完成这一切,或者单步执行调试器并查看各个变量得到的值。

关于c - 学习C编程-将数组传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30683731/

10-11 21:59