有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。

#include <stdio.h>
#define N 5

struct student
{
    int id;
    char sex[32];
    char name[32];
    int chinese;
    int math;
    int english;
    int science;
    int ave;
} stu[N];

void average(struct student *p)
{
    for (int i = 0; i < N; i++)
    {
        p[i].ave = (p[i].chinese + p[i].math + p[i].english + p[i].science) / 4; //计算平均成绩
    }
}

int main()
{
    struct student *p = stu;
    printf("请输入学生的信息\n");
    printf("学号 性别 姓名 语文 数学 英语 科学\n");
    for (int i = 0; i < N; i++)
    {
        scanf("%d %s %s %d %d %d %d", &p[i].id, p[i].sex, p[i].name, &p[i].chinese, &p[i].math, &p[i].english, &p[i].science);
    }

    average(p); //调用函数

    int max = 0; // 用于跟踪最高平均成绩的学生的索引
    for (int i = 1; i < N; i++)
    {
        if (stu[max].ave < stu[i].ave)
        {
            max = i;
        }
    }
    printf("总平均成绩最高的学生信息:\n");
    printf("学号: %d\n性别: %s\n姓名: %s\n语文: %d\n数学: %d\n英语: %d\n科学: %d\n平均分: %d\n",stu[max].id, stu[max].sex, stu[max].name, stu[max].chinese, stu[max].math, stu[max].english, stu[max].science, stu[max].ave);
    return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你编写这个程序。以下是代码实现: ```c #include<stdio.h> #include<string.h> struct student { char id[10]; char name[20]; char gender[5]; float score[4]; float avg_score; }; int main() { struct student stu[30]; // 存储30名学生信息 int i, j; float sum[4] = {0}; // 四门程的分 float avg[4] = {0}; // 四门程的平均分 struct student temp; // 用于排序的临时结构体变量 printf("请输入学生信息:\n"); for (i = 0; i < 30; i++) { printf("请输入第%d个学生学号姓名性别四门成绩:\n", i+1); scanf("%s %s %s %f %f %f %f", stu[i].id, stu[i].name, stu[i].gender, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2], &stu[i].score[3]); // 计算每个学生平均分 stu[i].avg_score = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2] + stu[i].score[3]) / 4; // 计算四门程的分 sum[0] += stu[i].score[0]; sum[1] += stu[i].score[1]; sum[2] += stu[i].score[2]; sum[3] += stu[i].score[3]; } // 计算四门程的平均分 for (i = 0; i < 4; i++) { avg[i] = sum[i] / 30; } // 按平均分排序 for (i = 0; i < 29; i++) { for (j = 0; j < 29-i; j++) { if (stu[j].avg_score < stu[j+1].avg_score) { temp = stu[j]; stu[j] = stu[j+1]; stu[j+1] = temp; } } } // 输出报表 printf("学号\t姓名\t性别\t语文\t数学\t英语\t物理\t平均分\n"); for (i = 0; i < 30; i++) { printf("%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].id, stu[i].name, stu[i].gender, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].avg_score); } printf("平均分\t\t\t%.1f\t%.1f\t%.1f\t%.1f\n", avg[0], avg[1], avg[2], avg[3]); return 0; } ``` 程序运行示例: ``` 请输入学生信息: 请输入第1个学生学号姓名性别四门成绩: 20210001 Peter Male 85 80 90 95 请输入第2个学生学号姓名性别四门成绩: 20210002 John Male 90 85 95 80 请输入第3个学生学号姓名性别四门成绩: 20210003 Lucy Female 80 90 85 90 ... 请输入第30个学生学号姓名性别四门成绩: 20210030 Lily Female 75 80 70 85 学号 姓名 性别 语文 数学 英语 物理 平均分 20210002 John Male 90.0 85.0 95.0 80.0 87.5 20210001 Peter Male 85.0 80.0 90.0 95.0 87.5 20210003 Lucy Female 80.0 90.0 85.0 90.0 86.3 ... 20210024 Jimmy Male 75.0 70.0 80.0 85.0 77.5 20210030 Lily Female 75.0 80.0 70.0 85.0 77.5 平均分 81.5 81.0 81.3 82.3 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值