wangsr


私信TA

用户名:wangxiti

访问量:581

签 名:

等  级
排  名 1611
经  验 2750
参赛次数 2
文章发表 3
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:本题看代码应该能懂

注意事项:数据不少,注意保持头脑清醒!!我算平均值时,一言难尽。


参考代码:

#include<stdio.h>

struct stu {

    char num[10];

    char name[10];

    int gd1;  //第一门成绩

    int gd2; //第二门成绩

    int gd3; //第三门成绩

    double t; //每个学生的总分

};

void print(struct stu p); // 用于输出

int get_max(struct stu *p,int n);  //寻找总分最高的学生,返回的是对应的下标

int main()

{

int n;scanf("%d",&n);

getchar(); // 消耗可能的空格

struct stu student[n+1];

double s1,s2,s3;

s1 = s2 = s3 = 0;  //记录每门课的成绩总和,用于计算平均分

// 输入各项数据

for(int i = 0; i < n; i++) {

    scanf("%s%s%d%d%d",\

    student[i].num,student[i].name,&student[i].gd1,&student[i].gd2,&student[i].gd3

    );

    student[i].t = student[i].gd1+student[i].gd2+student[i].gd3;

    //没输入一次,加上各科分数

    s1 += student[i].gd1;

    s2 +=student[i].gd2;

    s3 += student[i].gd3;

}

//计算平均分

double a1 = s1/n;double a2 = s2/n;double a3 = s3/n; 

//输出平均分

printf("%0.f %.0f %.0f\n",a1,a2,a3);

int j = get_max(student,n);

print(student[j]);

return 0;

}

void print(struct stu student) {

    printf("%s %s %d %d %d\n",

    student.num,student.name,student.gd1,student.gd2,student.gd3);

    return ; //void类型语句 return 可以不写

}

int get_max(struct stu *p,int n) {

    int cnt = 0; 

    double max = p[0].t;

    for(int i = 1; i < n; i++) {

        if(max < p[i].t) {

            max = p[i].t;

            cnt = i;

        }

    }

    return cnt; //返回最高分学生对应的下标

}


 

0.0分

0 人评分

  评论区

  • «
  • »