#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();
break;
case 2:
ave_grades();
break;
case 3:
no_pass();
break;
case 4:
max_grades();
break;
case 5:
f_max_t_min();
break;
case 0:
goto end;//暂时
default:
printf("输入格式错误,请重新输入");
break;//暂时
}
end:
return 0;
}
int all_grades()//查询全部成绩
{
int i,b[100],a;
for(i=0;i<a;i++)
{
scanf("%d",&b[i]);
printf("第%d名学生的成绩是:%d",i+1,b[i]);
}
}
float ave_grades()//查询平均分
{
int sum,i,b[100],a;
float ave;
for(i=0;i<a;i++)
{
sum=sum+b[i];
}
ave=1.0*sum/a;
printf("平均成绩为:%.2f",ave);
}
float no_pass()//查询不及格率
{
int sum,i,b[100],a;
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()//4 查询最高分
{
int sum,i,b[100],a;
int max=0;//最高分
for(i=0;i<a;i++)
{
if(max<b[i])
{
max=b[i];
}
}
printf("最高分为:%d",max);
}
int f_max_t_min()//5 按成绩降序排列
{
int sum,i,b[100],a,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]);
}
}

用c语言写一个成绩分析系统,结果自定义函数无法录入数组,所有功能无法实现
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 索利亚噶通 2021-12-04 21:15关注
这是因为你在主函数main中输入的变量a, i, c, b[100]没有传入到你的函数中去呀, 比如你的all_grades函数, 你又重新申请了一个a, i, c, b[100], 这里面根本没有你输入的内容呀!正确做法如下, 只写一个函数:
int all_grades(int a, int b[])//查询全部成绩 { for(i=0;i<a;i++) { scanf("%d",&b[i]); printf("第%d名学生的成绩是:%d",i+1,b[i]); } }
然后在主函数中的函数调用(其他函数都一样)
all_grades(a, b);
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用