学习c编程 - 将数组传递给函数

时间:2015-06-05 07:53:51

标签: c arrays

我知道为什么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;

}

2 个答案:

答案 0 :(得分:6)

如果要查找数组中的最大数字,请将所​​有元素与当前“最大”值进行比较。每当您找到更大的值时,请将其放入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个数组值,或者逐步调试调试器并查看相应变量的值。

答案 1 :(得分:0)

您可以比较数组的两个元素,并在比较它之后将数据存储在最大值中,然后在交换数字后,如果更大,这将是一个好的方法。 如果您使用喜欢:

if(x[count]>x[count+1])
    biggest=x[count]; 
    x[count]=x[count+1];
    x[count+1]=biggest;

循环中的代码。

您尝试将最高价值分配给最大值。这不是一个值得的想法。