977 2021-11-14 11:46 采纳率: 100%
浏览 28
已结题

关于#c++#的题目,请各位专家解答!

1.有5个学生,每个学生的资料包括学号、姓名、3门课成绩,用赋初值方法输入5个学生的数据到结构体数组中,输出每个学生3门课的平均成绩(保留2位小数)。输出格式为:
No name score1 score2 score3 average
101 Zhou 93 89 87 -
102 Yang 85 80 78 -
103 Chen 77 70 83 -
104 Qian 70 67 60 -
105 Li 72 70 69 -
2.在上题中,按平均成绩由高到低排序,输出每个学生的成绩,输出格式与上题相同。


#include <stdio.h>
struct student
{
    int num;
    char name[20];
    float score[3];
    float ave;
}stu[10];

int main()
{
    void input(struct student stu1[]);
    void ave_score(struct student stu1[]);
    void max_score(struct student stu1[]);
    input(stu);
    ave_score(stu);
    max_score(stu);
    return 0;
}

void input(struct student stu1[])
{
    int i;
    printf("请输入5个学生的学号、姓名、3门课程成绩:\n");
    for(i=0;i<5;i++)
    {
        printf("No.");
        scanf("%d%s%f%f%f",&stu1[i].num,&stu1[i].name,&stu1[i].score[0],&stu1[i].score[1],&stu1[i].score[2]);
        stu1[i].ave=(stu1[i].score[0]+stu1[i].score[1]+stu1[i].score[2])/3.0;
    }
    printf("\n");
}

void ave_score(struct student stu1[])
{
    int i;
    float sum=0;
    for(i=0;i<10;i++)
        sum+=stu1[i].ave;
    printf("3门课程总平均成绩为:%.1f\n",sum/10.0);
}

void max_score(struct student stu1[])
{
    int i,k=0;
    for(i=1;i<10;i++)
    {
        if(stu1[k].ave<stu1[i].ave) k=i;
    }
    printf("\n分数最高的学生信息为:\n");
    printf("学号:No.%d\n",stu1[k].num);
    printf("姓名:%s\n",stu1[k].name);
    printf("课程1成绩:%.1f\n",stu1[k].score[0]);
    printf("课程2成绩:%.1f\n",stu1[k].score[1]);
    printf("课程3成绩:%.1f\n",stu1[k].score[2]);
    printf("3门课程平均成绩:%.1f\n",stu1[k].ave);
}

展开全部

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-14 11:54
    关注

    问题是什麽啊?找代码的错误吗?
    你只输入了5个学生成绩,却在算10个人的平均分,怎么能行呢。你得输入10个人成绩,或者定义一个变量记录实际输入了几个学生成绩才行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    977 2021-11-15 06:06

    问题就是上面的1和2,我的代码就不用看了,谢谢

    回复
    CSDN专家-link 回复 977 2021-11-15 08:30

    #include <stdio.h>
    struct student
    {
        int num;
        char name[20];
        float score[3];
        float ave;
    }stu[5];
    int main()
    {
        void input();
        void sort_score();
        void print_score();
        input();
        sort_score();
        print_score();
        
        return 0;
    }
    void input()
    {
        int i;
        printf("请输入5个学生的学号、姓名、3门课程成绩:\n");
        for(i=0;i<5;i++)
        {
            scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
            stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
        }
    }
    
    void print_score()
    {
        int i;
        printf("%6s%20s%6s%6s%6s%10s\n","No","name","score1","score2","score3","average");
        for(i=0;i<5;i++)
            printf("%6d%20s%6d%6d%6d%10.1f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
    }
    
    void sort_score()
    {
        struct student s;
        for(int i=0;i<4;i++)
            for(int j=0;j<4-i;j++)
            {
                if(stu[j].ave < stu[j+1].ave)
                {
                    s= stu[j];
                    stu[j] = stu[j+1];
                    stu[j+1] = s;
                }
            }
    }
    
    

    可以的话采纳一下

    1
    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月20日
  • 创建了问题 11月14日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部