您的位置:首页 > 其它

第13周项目6(1)-体验文件操作

2014-11-22 17:56 239 查看
/*
*Copyright (c) 2014, 烟台大学计算机学院
*All rights reserved.
*文件名称:week13-project6-1.cpp
*作者:高赞
*完成日期:2014年 11 月 22 日
*版本号:v1.0
*
*问题描述:从文件english.dat中读入成绩数据,输出平均成绩、
优秀人数和不及格人数、最高成绩以及取得最高成绩学生的学号
*/
#include <fstream>   //操作文件必写
#include <iostream>
#include <iomanip>
#include <cstdlib>   //调用exit(1)需要包含cstdlib
using namespace std;
void maxscore(int x, int a);
int main( )
{
int a,i=0,j=0,n=0,max=0;
double sum=0,average;
ifstream infile("english.dat",ios::in);
//测试是否成功打开,打开失败时(如要读的数据文件不存在)退出
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
//下面读取数据并完成处理,若数据需要多次使用,可以读入到数组中
while(infile>>a)  //当到达文件尾,则循环处理结束。类似cin>>a,只不过数据来源于打开的文件
{
sum+=a;
if (a>=90)
++i;
if (a<=60)
++j;
if (a>max)
max=a;
++n;
}
infile.close();
average=sum/n;
cout << "平均成绩: " << setiosflags(ios::fixed) << setprecision(2) << average << endl
<< "优秀人数有: " << i << "人,比例" << setiosflags(ios::fixed) << setprecision(2) << (i*100.0)/(n*1.0) << "%" << endl
<< "不及格人数有: " << j << "人,比例" << setiosflags(ios::fixed) << setprecision(2) << (j*100.0)/(n*1.0) << "%" << endl
<< "最高成绩是" << max << "分," << endl
<< "取得最高成绩学生的学号: ";
maxscore(max,a);
cout << endl;

return 0;
}
void maxscore(int x, int a)
{
ifstream infile("english.dat",ios::in);
int i=0;
while (infile>>a)
{
if (x==a)
cout << i << " ";
++i;
}
infile.close();
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: