c++,这个要求下的几个问题该如何设计

img


这几个问题不太懂,可否有老师傅解答,大概是四个分开的回答
如果麻烦的话可以只给后面两道题的,麻烦了

#include <stdio.h>
float BX[6];
float XX[4];

typedef struct _student
{
    char name[20];
    float bxS[6];
    int xx1;
    float xx1S;
    int xx2;
    float xx2S;
}student;


void bxtj(student *stu,int n)
{
    for(int i=0;i<n;i++)
    {
        float sum = 0;
        for(int j=0;j<6;j++)
            sum += stu[i].bxS[j];
        printf("学生 %s 的必修课总成绩为:%.1f\n",stu[i].name,sum);
    }
}

void xxtj(student *stu,int n)
{
    for(int i=0;i<n;i++)
    {
        printf("学生 %s 的选修课总成绩为:%.1f\n",stu[i].name,stu[i].xx1S + stu[i].xx2S);
    }
}

void cjtj(student *stu,int n)
{
    for(int i=0;i<n;i++)
    {
        float sum = 0;
        for(int j=0;j<6;j++)
            sum += stu[i].bxS[j];
        printf("学生 %s 的总成绩为:%.1f\n",stu[i].name,sum+stu[i].xx1S + stu[i].xx2S);
    }
}

void jjpm(student *stu,int n)
{
    float qz[40] = {0};
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<6;j++)
            qz[i] += stu[i].bxS[j] * BX[j];
        for(int j=0;j<4;j++)
        {
            if(stu[i].xx1 == j+1)
                qz[i] += stu[i].xx1S * XX[j];
            if(stu[i].xx2 == j+1)
                qz[i] += stu[i].xx2S * XX[j];
        }
    }
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(qz[j] < qz[j+1])
            {
                float t = qz[j];
                qz[j] = qz[j+1];
                qz[j+1] = t;
                student s = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = s;
            }
        }
    }
    for(int i=0;i<n;i++)
        printf("名次:%d,学生:%s,加权成绩:%.1f\n",i+1,stu[i].name,qz[i]);
}
 
int main()
{
    student stu[40];
    int n,i,j;
    printf("请输入学生人数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("请输入第%d个学生信息:\n",i+1);
        printf("请输入学生姓名:");
        scanf("%s",stu[i].name);
        printf("请输入六门必修课成绩:");
        for(j=0;j<6;j++)
            scanf("%f",&stu[i].bxS[j]);
        printf("请输入第一门选修课序号(1-4)和成绩:");
        scanf("%d%f",&stu[i].xx1,&stu[i].xx1S);
        printf("请输入第二门选修课序号(1-4)和成绩:");
        scanf("%d%f",&stu[i].xx2,&stu[i].xx2S);
    }
    printf("请输入六门必修课的权值:");
    for(i=0;i<6;i++)
        scanf("%f",&BX[i]);
    printf("请输入四门选修课的权值:");
    for(i=0;i<4;i++)
        scanf("%f",&XX[i]);
    bxtj(stu,n);
    xxtj(stu,n);
    cjtj(stu,n);
    //
    jjpm(stu,n);
    return 0;
}


如何设计,还是最终如何做?

ez