找到数组中最大的数字

时间:2016-05-02 17:13:48

标签: c

我尝试使用数组和指针找到最大数字,但程序在"找到步骤"时会出错。你能告诉我我的错误在哪里吗?

void find_two_largest(int a[], int n, int *largest)
   {
          int i; 
for(i=0;i<n;i++)
{
    printf("enter %d. value: ",i+1);
    scanf("%d",&a[i]);
}
       int max=a[0];

       for(i=0;i<n;i++)
           if(a[i]>max)    max=a[i];


         largest=&max;

       printf("%d",*largest);
           }

 int main()
   {
int n,i,a[100],*lar=NULL;

printf("how many elements you want to store?\t");
scanf("%d",&n);

find_two_largest(a, n, lar);

return 0;
       }

2 个答案:

答案 0 :(得分:0)

主程序未初始化*larfind_two_largest函数在设置用户值之前初始化max,因此max可以是内存中的任何值。

void find_two_largest(int a[], int n, int *largest)
{
    int i,max;

    for(i=0;i<n;i++)
    {
        printf("enter %d. value: ",i+1);
        scanf("%d",&a[i]);
    }
    //initialize max after entering values
    max=a[0];
    for(i=0;i<n;i++)
        if(a[i]>max)    max=a[i];


    *largest=max;

    printf("%d",*largest);

}


int main()
{
    int n,i,a[100],*lar,*slar;

    //initialize;     
    *lar=INT_MIN;

    printf("how many elements you want to store?\t");
    scanf("%d",&n);

    find_two_largest(a, n, lar);

    return 0;
}

答案 1 :(得分:-2)

从lar定义中删除*。 这样应该是:

int n,i,a[100], lar,*slar;

然后添加&amp;打电话:

find_two_largest(a, n, &lar);

之后,在设置[0]值之后输出max = a [0]。