为什么我的主函数不能成功调用下面的函数啊,还是哪里写错了,大家help一下(语言-c语言)


#include 
#define N 100
void find_two_largest( int a[],int n,int *largest,int *second_largest);
   int main(void)
{
    int a[N], len;
    int largest, second_largest;
    scanf("%d", &len);
    for (int i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }
    find_two_largest(a,len,&largest, &second_largest);
    printf("%d %d\n", largest, second_largest);
    return 0;
}
void find_two_largest( int a[100], int n, int *largest, int *second_largest)
{
    int i;
    scanf("%d",&n);
    for (i=0;i"%d",&n);
    *largest = *second_largest = a[0];
    for(i=0;iif(a[i]>*largest)
    *largest =a[i];
    for(i=0;iif(a[i]!=*largest&&a[i]>*second_largest)
    *second_largest = a[i]; 
}

void find_two_largest()函数里再次输入数组元素就多余了,修改如下,供参考:

#include <stdio.h>
#define N 100
void find_two_largest( int a[],int n,int *largest,int *second_largest);
   int main(void)
{
    int a[N], len;
    int largest, second_largest;
    scanf("%d", &len);
    for (int i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }
    find_two_largest(a,len,&largest, &second_largest);
    printf("%d %d\n", largest, second_largest);
    return 0;
}
void find_two_largest( int a[100], int n, int *largest, int *second_largest)
{
    int i;
       //scanf("%d",&n);     这三行多余了。
       //for (i=0;i<n;i++)
       //scanf("%d",&n);
    *largest = *second_largest = a[0];
    for(i=0;i<n;i++)
        if(a[i]>*largest)
            *largest = a[i];
    for(i=0;i<n;i++)
        if(a[i]!=*largest&&a[i]>*second_largest)
            *second_largest = a[i];
}

  • 主函数里 有输入, 子函数里也有输入
  • 主函数 输入一个 len, 需要 再输入 len个 数
  • 子函数 输入一个n,需要再输入n个数【这里 多余的,子函数的n 由 调用者传入即可】

img

img

img


如有帮助,欢迎点赞+采纳哈!