问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#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()'