问题及代码:
#include <fstream> //操作文件必写
#include<iostream>
#include<cstdlib> //调用exit(1)需要包含cstdlib
using namespace std;
int main( )
{
int a[10000],b[10000],c,max=-9999; //要求最大值,先默认max为一个很小的数;a[10000]存储读入的文件中的数值,b[10000]存储取得最大值的编号
int m=0,n=0,i=0;
//以输入的方式(ios::in)打开文件,注意english.dat必须在文件夹中存在
ifstream infile("english.dat",ios::in);
//测试是否成功打开,打开失败时(如要读的数据文件不存在)退出
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
//下面读取数据并完成处理,若数据需要多次使用,可以读入到数组中
while(infile>>c) //当到达文件尾,则循环处理结束。类似cin>>c,只不过数据来源于打开的文件
{
a[m]=c;
if(c>max)
max=c; //在读入过程中,max将保存最大值
m++;
}
while (n<=m)
{
if (a[n]==max)
{
b[i]=n;
i++;
}
n++;
}
infile.close(); //读入完毕要关闭文件
//下面对数据的操作和文件就没有关系了,本例输出求得的最大值
cout<<"本次考试中最高分是:"<<max<<"。取得最高成绩的学生学号为(学号为1~10000):";
for (int j=0; j<i; j++)
{
cout<<b[j]+1<<" ";
}
return 0;
}
english.dat截图:
运行结果: