成绩统计(score) c++

题目描述

期末考试结束了,学校已批改完所有试卷,已知某年级共有 n 位学生和他们对应的成绩。老师们想知道这个年级学生成绩的分布情况,以便下学期更好的开展教学,因此现在需要统计一些数据如下:

1)全校最低分、最高分的成绩及人数;

2)同分最多的成绩和人数,如果相同,依次由低分到高分输出;

3)分值 p 和 q 之间(包含 p 和 q)人数。

请同学们编程帮忙统计吧。

输入格式

输入数据共 3 行:

第一行:一个整数 n,表示学校某年级总人数;

第二行:共有 n 个由空格分隔的正整数,表示每一位学生成绩。

第三行:共有 2 个由空格分隔的正整数 p 和 q。

输出格式

共 4 行:

第一行 :2 个由空格分隔的正整数,对应最低的成绩及人数;

第二行 :2 个由空格分隔的正整数,对应最高的成绩及人数;

第三行:多个由空格分隔的正整数,对应多个相同分数最多的成绩及人数。

第 4 行 :1 个正整数,对应成绩 p 和 q 之间人数。

输入输出样列

输入样例1:复制

 
11 80 85 80 78 90 95 95 80 98 78 95 85 95

输出样例1:复制

 
78 2 98 1 80 3 95 3 5

说明

数据范围&#x

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用结构体数组实现的C++成绩管理系统,支持数据验证、排序和统计功能: ```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; // 定义学生结构体 struct Student { string id; // 学号 string name; // 姓名 int score[3]; // 三门课程的成绩 int totalScore; // 总分 double avgScore; // 平均分 }; // 数据验证函数,确保输入的成绩在0-100之间 bool validateScore(int score) { return score >= 0 && score <= 100; } // 录入学生信息函数 void inputStudent(Student &s) { cout << "请输入学生的学号:"; cin >> s.id; cout << "请输入学生的姓名:"; cin >> s.name; for (int i = 0; i < 3; i++) { int score; do { cout << "请输入" << s.name << "的第" << i + 1 << "门课程成绩:"; cin >> score; } while (!validateScore(score)); // 数据验证 s.score[i] = score; } } // 计算总分和平均分函数 void calculateScore(Student &s) { int sum = 0; for (int i = 0; i < 3; i++) { sum += s.score[i]; } s.totalScore = sum; s.avgScore = sum / 3.0; } // 按总分排序函数 bool cmp(Student a, Student b) { return a.totalScore > b.totalScore; } // 输出学生信息函数 void outputStudent(Student s) { cout << "学号:" << s.id << ",姓名:" << s.name << ",成绩:"; for (int i = 0; i < 3; i++) { cout << s.score[i] << " "; } cout << ",总分:" << s.totalScore << ",平均分:" << s.avgScore << endl; } int main() { const int N = 5; // 学生数量 Student students[N]; // 录入学生信息 for (int i = 0; i < N; i++) { cout << "请输入第" << i + 1 << "个学生的信息:" << endl; inputStudent(students[i]); calculateScore(students[i]); } // 按总分排序 sort(students, students + N, cmp); // 输出学生信息 for (int i = 0; i < N; i++) { outputStudent(students[i]); } return 0; } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值