怕冷的南方人 2021-12-04 21:08 采纳率: 60%
浏览 21
已结题

用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();
             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]);    
    }
}
    

  • 写回答

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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 12月4日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料