21xrx.com
2024-12-22 20:34:00 Sunday
登录
文章检索 我的文章 写文章
C++文件读取并排序平均成绩从高到低输出
2023-07-10 07:50:16 深夜i     --     --
C++ 文件读取 排序 平均成绩 输出

在学生考试中,统计和分析学生的成绩是至关重要的。C++作为一种优秀的编程语言,能够很好地实现文件读取和数据处理的功能。本文将介绍如何使用C++编写程序,实现读取学生成绩文件并排序,最后从高到低输出平均成绩。

首先,我们需要准备一个学生成绩文件,其中包含每个学生的姓名和三科成绩(语文、数学、英语)。该文件的格式可以采用csv格式,即用逗号隔开每个信息。例如:张三,80,90,70。

下一步,我们需要编写C++代码来读取该文件。我们可以使用C++中的fstream库来实现。首先,需要包含头文件#include 。然后,我们可以使用以下代码打开文件:


fstream file("students.csv",ios::in);

if(!file.is_open())

  cout<<"无法打开文件!"<<endl;

  return 0;

打开文件后,我们可以在文件中读取每个学生的成绩信息,并存储到一个二维数组中。代码如下:


string name;

int grade[3];

int scores[100][4];//用于存储读取的成绩信息

int index = 0;//记录当前读取的是第几行

while(!file.eof()){//循环读取每一行

  getline(file,name,',');//读取姓名

  for(int i=0;i<3;i++)

    file>>grade[i];//读取成绩

  file.get();//读取并忽略掉最后的换行符

  scores[index][0] = index+1;//记录学生编号

  scores[index][1] = grade[0];//记录语文成绩

  scores[index][2] = grade[1];//记录数学成绩

  scores[index][3] = grade[2];//记录英语成绩

  index++;

}

file.close();//关闭文件

在读取完文件后,我们就可以对二维数组进行排序。这里我们以平均成绩从高到低的顺序进行排序。实现方法是对每个学生的三科成绩求平均值,然后按照平均成绩大小进行排序。代码如下:


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

  float avg = (scores[i][1]+scores[i][2]+scores[i][3])/3.0;//计算平均成绩

  scores[i][0] = i+1;//重新设置学生编号

  scores[i][1] = avg;//将平均成绩存储到数组中

}

for(int i=0;i<index-1;i++){

  for(int j=i+1;j<index;j++){

    if(scores[i][1]<scores[j][1]){//按照平均成绩大小进行交换

      int temp[4];

      for(int k=0;k<4;k++){

        temp[k] = scores[i][k];

        scores[i][k] = scores[j][k];

        scores[j][k] = temp[k];

      }

    }

  }

}

最后,我们可以按照排序后的顺序输出每个学生的平均成绩。代码如下:


cout<<"学号\t姓名\t语文\t数学\t英语\t平均成绩"<<endl;

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

  cout<<scores[i][0]<<"\t";//输出学生编号

  cout<<name<<"\t";

  for(int j=1;j<=3;j++)

    cout<<scores[i][j]<<"\t";//输出语文成绩、数学成绩和英语成绩

  cout<<scores[i][4]<<endl;//输出平均成绩

}

上述代码就是C++读取并排序学生成绩文件,从高到低输出平均成绩的完整实现过程。通过这个程序,我们可以很好地分析学生的表现,并为下一步学生教育提供参考。

  
  

评论区

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