自考新教材-p322

源程序:

#include <iostream>
#include <fstream>
using namespace std;

class CStudent
{
public:
char id[11]; //学号
char name[21]; //姓名
int score; //成绩
};
int main()
{
CStudent stu;
int count = 0, maxScore, minScore, maxNo, minNo;
maxScore = INT_MIN; //C++整型数的最小值
minScore = INT_MAX; //C++整型数的最大值
maxNo = minNo = 0;
ifstream inFile("c:\tmp\students.dat", ios::in | ios::binary); //以二进制读方式打开
if (!inFile) //条件成立,则说明文件打开出错
{
cout << "创建文件失败" << endl;
return 0;
}
while (inFile.read((char*)&stu, sizeof(CStudent))) //顺序读取文件中的记录
{
if (stu.score > maxScore) //查找最高分学生
{
maxScore = stu.score; //记录当前最高分
maxNo = count; //maxNo记录当前最高分记录号
}
else if (stu.score < minScore) //查找最低分学生
{
minScore = stu.score; //记录当前最高分
minNo = count; //minNo记录当前最低分记录号
}
count++; //记录数+1
}
inFile.clear(); //将流恢复为正常状态
inFile.seekg(sizeof(CStudent)*maxNo, ios::beg);//文件指针移动到最高分记录
inFile.read((char*)&stu, sizeof(CStudent)); //读入最高分记录
cout << "最高分记录:"
<< maxNo << ";" << stu.id << "," << stu.name << "," << stu.score << endl;
inFile.seekg(sizeof(CStudent)*minNo, ios::beg); //文件指针移动到最低分记录
inFile.read((char*)&stu, sizeof(CStudent)); //读入最低分记录
cout << "最低分记录:"
<< minNo << ";" << stu.id << "," << stu.name << "," << stu.score << endl;
inFile.close();
system("pause");
return 0;
}

运行结果:

原文地址:https://www.cnblogs.com/duanqibo/p/12263815.html