21xrx.com
2024-11-10 00:24:20 Sunday
登录
文章检索 我的文章 写文章
C++统计学生成绩
2023-07-06 22:54:19 深夜i     --     --
C++ 统计 学生成绩 计算 分析

C++是一种常用的编程语言,在学习和应用中被广泛使用。其中,统计学生成绩是C++语言与实际应用场景结合的一个非常有意义的部分。本文将介绍如何使用C++语言来统计学生成绩。

首先,需要明确的是,统计学生成绩需要从多个方面进行统计,比如总分、平均分、最高分、最低分等等。因此,我们需要先定义一个结构体,用来存储学生的姓名和其对应的各项成绩。结构体的形式如下:


struct Student

  string name;

  int score1;

  int score2;

  int score3;

  int total;

  float average;

;

其中,name表示学生的姓名,score1、score2、score3分别表示三门科目的成绩,total表示总分,average表示平均分。

接着,我们需要从文件中读入学生的成绩信息,这里我们假设成绩信息存储在以“scores.txt”为文件名的文本文件中,每行格式均为“姓名,成绩1,成绩2,成绩3”。使用C++中的文件读写相关的函数,可以轻松地完成此操作。


vector<Student> students;

ifstream file("scores.txt");

if (file) {

  string line;

  while (getline(file, line)) {

    stringstream ss(line);

    string name;

    int score1, score2, score3;

    getline(ss, name, ',');

    ss >> score1 >> score2 >> score3;

    Student s;

    s.name = name;

    s.score1 = score1;

    s.score2 = score2;

    s.score3 = score3;

    s.total = score1 + score2 + score3;

    s.average = s.total / 3.0;

    students.push_back(s);

  }

  file.close();

} else

  cout << "Unable to open file." << endl;

在上述代码中,我们首先打开文件,读取每一行的内容,并将其按照“,”进行分割,然后将分割后的姓名和成绩信息赋值给对应的结构体成员,并把该结构体添加到一个vector容器中。

读入数据后,我们就可以对学生成绩进行统计分析了。以下为统计功能的实现代码:


int sum1 = 0, sum2 = 0, sum3 = 0, sum_total = 0;

float avg1, avg2, avg3, avg_total;

int max_total = INT_MIN;

int min_total = INT_MAX;

string max_name, min_name;

for (Student s : students) {

  sum1 += s.score1;

  sum2 += s.score2;

  sum3 += s.score3;

  sum_total += s.total;

  if (s.total > max_total)

    max_total = s.total;

    max_name = s.name;

  

  if (s.total < min_total)

    min_total = s.total;

    min_name = s.name;

  

}

avg1 = sum1 / (float)students.size();

avg2 = sum2 / (float)students.size();

avg3 = sum3 / (float)students.size();

avg_total = sum_total / (float)students.size();

cout << "Average score of subject 1: " << avg1 << endl;

cout << "Average score of subject 2: " << avg2 << endl;

cout << "Average score of subject 3: " << avg3 << endl;

cout << "Overall average score: " << avg_total << endl;

cout << "Student with highest score: " << max_name << ", score: " << max_total << endl;

cout << "Student with lowest score: " << min_name << ", score: " << min_total << endl;

上述代码中,我们使用了for-each循环遍历了vector容器中的所有元素,分别计算总分、科目平均分以及总平均分,并找到最高分和最低分对应的学生姓名。然后,输出以上统计信息。

综上,本文介绍了如何使用C++语言来统计学生成绩。使用C++语言可以快捷地实现各项统计功能,并且可扩展性强,适用于不同类型、不同格式的成绩数据。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复