C++第11周项目5——体验文件操作
来源:互联网 发布:画路线图的软件 编辑:程序博客网 时间:2024/05/21 03:18
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565
【项目5-体验文件操作】
先阅读《文件操作初体验》。文件english.dat(含10000个数据的文件在BB平台。为方便校外读者,本文后附100个数据,自行复制粘贴到记事本中保存为文件english.dat))中给出的是2012级10000名新生入学英语分级考试全校同学的成绩。编程序,求出这次考试的平均成绩,并统计各分数段的人数(优秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。运行结果如图所示。
提示:本任务完成困难,可以考虑预做下面的练习
练习1:从文件中读出学生的成绩,输出最高、最低,以及平均成绩(平均成绩为小数)。
练习2:从文件中读出学生的成绩,统计90分以上学生的人数并输出。
拓展1:将输出界面改良下,显示成下面的样子(仅变输出方式)
拓展2:将统计结果保存到数据文件statictic.dat中(提示:要写入文件了)
【参考解答】
项目任务参考代码:
#include <fstream> //操作文件必写#include<iostream>using namespace std;int main( ){int s,i,r; int a=0, b=0,c=0,d=0,e=0;//分别代表优秀、良好、中等、及格、不及格人数double sum=0,ave;//以输入的方式(ios::in)打开文件ifstream infile("english.dat",ios::in);if(!infile) {cerr<<"open error!"<<endl;exit(1);}for(i=0;i<10000;i++){infile>>s;sum+=s;r=s/10; //r用于分出“档次”switch(r){case 10:case 9: a++; break;case 8: b++; break;case 7: c++; break;case 6: d++; break;default: e++; break;} }infile.close(); //读入完毕要关闭文件//下面对数据的操作和文件就没有关系了,本例输出求得的最大值ave=sum/10000;cout<<"平均成绩为:"<<ave<<endl;cout<<"优秀人数:"<<a<<endl;cout<<"良好人数:"<<b<<endl;cout<<"中等人数:"<<c<<endl;cout<<"及格人数:"<<d<<endl;cout<<"不及格人数:"<<e<<endl;return 0;}
拓展1参考代码:
#include <fstream> //操作文件必写#include<iostream>using namespace std;int main( ){int s,i,r; int a=0, b=0,c=0,d=0,e=0;//分别代表优秀、良好、中等、及格、不及格人数double sum=0,ave;//以输入的方式(ios::in)打开文件ifstream infile("english.dat",ios::in);if(!infile) {cerr<<"open error!"<<endl;exit(1);}for(i=0;i<10000;i++){infile>>s;sum+=s;r=s/10; //r用于分出“档次”switch(r){case 10:case 9: a++; break;case 8: b++; break;case 7: c++; break;case 6: d++; break;default: e++; break;} }infile.close(); ave=sum/10000;int max,l; //将存储这几个分数段中的最多人数,l是输出“进度条”的长度max=a;if(max<b) max=b;if(max<c) max=c;if(max<d) max=d;if(max<e) max=e;cout<<"平均成绩为:"<<ave<<endl;//人数最多的(max)输出20个格子,据此可算出各档需要多少格子cout<<"优秀 ";l=double(a)/max*50;for(i=0;i<l;++i) cout<<'#';cout<<" "<<a<<endl;cout<<"良好 ";l=double(b)/max*50;for(i=0;i<l;++i) cout<<'#';cout<<" "<<b<<endl;cout<<"中等 ";l=double(c)/max*50;for(i=0;i<l;++i) cout<<'#';cout<<" "<<c<<endl;cout<<"及格 ";l=double(d)/max*50;for(i=0;i<l;++i) cout<<'#';cout<<" "<<d<<endl;cout<<"挂科 ";l=double(e)/max*50;for(i=0;i<l;++i) cout<<'#';cout<<" "<<e<<endl;return 0;}
附:本文后附100个数据,自行复制粘贴到记事本中保存为文件english.dat,以便于完成练习。
66
77
97
65
69
79
79
77
69
74
90
73
64
69
69
69
74
71
83
96
87
88
62
76
65
51
66
73
77
78
73
52
78
75
73
60
69
56
76
68
76
77
87
56
61
62
69
64
73
68
62
62
79
88
79
77
71
57
88
69
71
78
74
67
86
55
86
78
81
52
66
67
68
85
72
74
84
64
61
76
71
64
91
72
82
60
70
64
84
75
67
67
85
70
59
72
87
65
55
77
- C++第11周项目5——体验文件操作
- 第13周项目6-体验文件操作(5)
- C++第14周项目7——体验文件操作
- 第13周上机实践项目6——体验文件操作(1-热身)
- 第13周上机实践项目6——体验文件操作(2-实战)
- 第13周上机实践项目6——体验文件操作(3-实战)
- 第13周项目6(1)-体验文件操作
- 第13周项目6(2)-体验文件操作
- 第13周 项目6-体验文件操作(热身)
- 第13周项目6-体验文件操作(1)
- 第13周项目6-体验文件操作(4)
- 第13周项目6-体验文件操作
- 第十三周项目6——文件操作初体验
- 第十三周项目六—体验文件操作(预备)
- 第十三周项目六—体验文件操作(热身)
- 第13周项目6-体验文件操作(5工人工资)
- 第13周项目6-体验文件操作(5)工资排序
- 第十三周项目六——体验文件操作(5-实战)
- 黑马训练营-学习笔记----网络编程
- VC++2005 Express 相关资源下载
- 浅谈在浏览器中输入URL返回页面的过程
- 查看linux系统相关信息的一些操作与指令
- 搭建Linux 编程工具-萝卜青菜各有所爱
- C++第11周项目5——体验文件操作
- 关于NSAutoReleasePool的理解
- Linux-vpn 配置方法
- java jsp基础
- (2)AT&T汇编笔记
- 一些MP3文件在Music app中看不到Duration的Debug过程
- C语言实现双向链表[上]
- Extjs4.0.7 submit() 提交后获取异常方法
- Java中的String