c语言学生成绩分析系统,用数组做函数参数遇到问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
int all_grades();
float ave_grades();
float no_pass();
int max_grades();
int f_max_t_min();
int main()
{
    int a,i,c,b[100];//a是学生人数,i是循环数,c是选项 
    printf("欢迎进入学生成绩分析系统\n");
    printf("请输入学生人数:\n");
    scanf("%d",&a);
    for(i=0;i<a;i++)
    {
        printf("请输入第%d名学生的成绩:\n",i+1);
        scanf("%d",&b[i]);
     } 
     printf("请选择操作:\n");
     printf("1 查询全部成绩\n");
     printf("2 查询平均分\n");
     printf("3 查询不及格率\n");
     printf("4 查询最高分\n");
     printf("5 按成绩降序排列\n");
     printf("0 退出\n");
     scanf("%d",&c);
     switch(c)
     {
         case 1:
             all_grades(a,b);
             break;
         case 2:
             ave_grades(a,b);
             break;
         case 3:
             no_pass(a,b);
             break;
         case 4:
             max_grades(a,b);
             break;
         case 5:
             f_max_t_min(a,b);
             break;
         case 0:
             goto end;//暂时 
         default:
             printf("输入格式错误,请重新输入");
            break;//暂时 
     }
     end:
    return 0;
 } 
int all_grades(int a,int b[])//查询全部成绩
{
    for(i=0;i<a;i++)
    {
        scanf("%d",&b[i]);
        printf("第%d名学生的成绩是:%d",i+1,b[i]);
    }
}
float ave_grades(int a,int b[])//查询平均分
{
    float ave;
    for(i=0;i<a;i++)
    {
        sum=sum+b[i];
    }
    ave=1.0*sum/a;
    printf("平均成绩为:%.2f",ave);
}
float no_pass(int a,int b[])//查询不及格率
{
    int c=0;//不及格人数
    float d;//不及格率 
    for(i=0;i<a;i++)
    {
        if(b[i]<60)
        {
            c++;
        }
        }
        d=1.0*c/a;    
        printf("不及格率为:%.2f",d);
 } 
int max_grades(int a,int b[])//4 查询最高分
{
    int max=0;//最高分
    for(i=0;i<a;i++)
    {
        if(max<b[i])
        {
            max=b[i];
        }
        }
        printf("最高分为:%d",max);    
}
int f_max_t_min(int a,int b[])//5 按成绩降序排列
{
    int i,temp,j;
    for(i=0;i<a-1;i++)
    {
        for(j=0;j<a-1-i;j++)
        {
            if(b[j]<b[j+1])
            {
                temp=b[j];
                b[j]=b[j+1];
                b[j+1]=temp;
            }
        }
    }
    for(i=0;i<a;i++)
    {
        printf("第%d名:%d",i+1,b[i]);    
    }
}
//日志:
//1 遇到自定义函数数组做参数    


环境是DEV C++
运行之后会出现[Error] too many arguments to function 'int all_grades()'