【成绩分析】(C++)

题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

请计算这次考试的最高分、最低分和平均分。

输入描述
输入的第一行包含一个整数 n\ (1 ≤ n ≤ 10^4)n (1≤n≤10
4),表示考试人数。

接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述
输出三行。

第一行包含一个整数,表示最高分。

第二行包含一个整数,表示最低分。

第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。

输入输出样例
输入

7
80
92
56
74
88
99
10

输出

99
10
71.29

本题答案代码如下

#include <iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int Min=100;
  int Max=0;
  double sum=0;
  double a=0;
  for(int i=1;i<=n;i++)
  {
    int score;
    cin>>score;
    Min=min(score,Min);
    Max=max(score,Max);
    sum+=score;
  }
  a=sum/n;
  cout<<Max<<endl;
  cout<<Min<<endl;
  cout<<fixed<<setprecision(2)<<a<<endl;
  //或者是printf("%.2f",ave)
  return 0;
}

答案较为简单,唯一要注意的两点是:
一.保留两位小数(两种方法)
①用C输出较为简单

printf("%.2f",a);

②C++输出

#include<iomanip>//输入头文件

cout<<fixed<<setprecision(n)<<a<<endl;//公式
//n是保留几位小数
//a是要输出的元素

二.重要头文件 algorithm
max():求两个数的最大值
min():求两个数的最小值
abs():求一个数的绝对值
swap():用来交换x和y的值
reverse():翻转
sort():排序
find(a,b,c):查找某数组指定区间a~b内是否有c,若有,则返回该位置的地址。
fill():填充
count():查找某值出现的次数
__gcd():求最大公因数(用二者乘积除以最大公因数即可得到最小公倍数,因此没有求最小公倍数的函数)
更多详细内容参照添加链接描述

后续会出很多蓝桥杯题目解析,主要是自己学习过程中遇到的问题,欢迎关注
评论区可一起探讨学习

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个学生成绩分析系统可以有以下功能: 1. 输入学生信息和成绩数据 2. 统计每个学生的总分和平均分 3. 统计每个科目的平均分和总分 4. 输出每个学生的成绩单,包括每个科目的成绩、总分和平均分 5. 输出所有学生的平均分和总分 6. 根据学生的总分或平均分进行排序并输出排名 下面是一个简单的C++程序示例: ```c++ #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; // 学生信息结构体 struct Student { string name; // 姓名 int id; // 学号 vector<int> scores; // 分数 int total_score; // 总分 double avg_score; // 平均分 }; // 计算学生总分和平均分 void calc_student_score(Student& s) { s.total_score = 0; for (int score : s.scores) { s.total_score += score; } s.avg_score = static_cast<double>(s.total_score) / s.scores.size(); } // 计算每个科目的平均分和总分 void calc_subject_score(const vector<Student>& students, vector<int>& subject_total_scores, vector<double>& subject_avg_scores) { subject_total_scores.clear(); subject_avg_scores.clear(); int num_subjects = students[0].scores.size(); subject_total_scores.resize(num_subjects, 0); subject_avg_scores.resize(num_subjects, 0.0); for (const Student& s : students) { for (int i = 0; i < num_subjects; i++) { subject_total_scores[i] += s.scores[i]; } } for (int i = 0; i < num_subjects; i++) { subject_avg_scores[i] = static_cast<double>(subject_total_scores[i]) / students.size(); } } // 输出学生信息和成绩 void print_student(const Student& s) { cout << "姓名: " << s.name << endl; cout << "学号: " << s.id << endl; cout << "成绩: "; for (int score : s.scores) { cout << score << " "; } cout << endl; cout << "总分: " << s.total_score << endl; cout << "平均分: " << s.avg_score << endl; } // 输出所有学生的平均分和总分 void print_summary(const vector<Student>& students) { int total_score = 0; double avg_score = 0.0; for (const Student& s : students) { total_score += s.total_score; avg_score += s.avg_score; } avg_score /= students.size(); cout << "所有学生总分: " << total_score << endl; cout << "所有学生平均分: " << avg_score << endl; } // 按总分排序比较函数 bool compare_total_score(const Student& s1, const Student& s2) { return s1.total_score > s2.total_score; } // 按平均分排序比较函数 bool compare_avg_score(const Student& s1, const Student& s2) { return s1.avg_score > s2.avg_score; } int main() { vector<Student> students; vector<int> subject_total_scores; vector<double> subject_avg_scores; // 输入学生信息和成绩数据 int num_students, num_subjects; cout << "请输入学生人数: "; cin >> num_students; cout << "请输入科目数: "; cin >> num_subjects; students.resize(num_students); for (int i = 0; i < num_students; i++) { cout << "请输入第" << i + 1 << "个学生的姓名和学号: "; cin >> students[i].name >> students[i].id; students[i].scores.resize(num_subjects); cout << "请输入第" << i + 1 << "个学生的成绩: "; for (int j = 0; j < num_subjects; j++) { cin >> students[i].scores[j]; } calc_student_score(students[i]); } // 统计每个科目的平均分和总分 calc_subject_score(students, subject_total_scores, subject_avg_scores); // 输出每个科目的平均分和总分 cout << "每个科目的总分和平均分: " << endl; for (int i = 0; i < num_subjects; i++) { cout << "科目" << i + 1 << "总分: " << subject_total_scores[i] << endl; cout << "科目" << i + 1 << "平均分: " << subject_avg_scores[i] << endl; } // 输出每个学生的成绩单 cout << "每个学生的成绩单: " << endl; for (const Student& s : students) { print_student(s); } // 输出所有学生的平均分和总分 print_summary(students); // 按总分排序并输出排名 sort(students.begin(), students.end(), compare_total_score); cout << "按总分排名: " << endl; for (int i = 0; i < num_students; i++) { cout << "第" << i + 1 << "名: " << students[i].name << " 总分: " << students[i].total_score << endl; } // 按平均分排序并输出排名 sort(students.begin(), students.end(), compare_avg_score); cout << "按平均分排名: " << endl; for (int i = 0; i < num_students; i++) { cout << "第" << i + 1 << "名: " << students[i].name << " 平均分: " << students[i].avg_score << endl; } return 0; } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值