请问我这么写为什么不对,要怎么改才对?

任务描述:
编写函数,功能为返回数组中的最大值。

在主函数中输入10个整数,存入数组中,调用函数得到最大值输出。

输入样例:
1 2 3 4 5 6 7 8 9 0
输出样例:
9


#include
#define N 10
int a[10],i,j,k,max=0;
int f(int a[],int N){
    for(i=0;iif(a[i]>max){
        max=a[i];
        }
        return max;
    }
   return max;
}
int main(){
    
    for(i=0;iscanf("%d",&a[i]);
    }
   printf("%d",f(a,N));
}

把第一个return max删除

把第10行代码删除,你这行代码导致这个数组只会比较一次a[i]和max的值,也就是结果要么返回a[0],要么max

主要问题在于:

你的数组定义应该是 int a[N],而不是 int a[10]。
你的f函数中有一个return语句在循环的内部,导致只能返回第一个元素的值。
你的主函数缺少return 0;语句。

#include<stdio.h>
#define N 10
int a[N],i,j,k,max=0;
int f(int a[],int N){
    for(i=0;i<N;i++){
        if(a[i]>max){
            max=a[i];
        }
    }
    return max;
}
int main(){
    for(i=0;i<N;i++){
        scanf("%d",&a[i]);
    }
    printf("%d",f(a,N));
    return 0;
}