C++第11周项目5——体验文件操作
2023-09-11 14:15:56 时间
课程首页地址: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 ++i) cout #; cout " " a endl; cout "良好 "; l=double(b)/max*50; for(i=0;i ++i) cout #; cout " " b endl; cout "中等 "; l=double(c)/max*50; for(i=0;i ++i) cout #; cout " " c endl; cout "及格 "; l=double(d)/max*50; for(i=0;i ++i) cout #; cout " " d endl; cout "挂科 "; l=double(e)/max*50; for(i=0;i ++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++的第七天(核心课程):文件操作 学过我之前c语言课程的都应该学过文件了,或者说有过编程基础的人都应该学过文件的相关知识了。所以说这一章节对大家来说可能不会太难,但是还是要会不是。哈哈哈,开始我们下面的学习。
贺利坚 烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
相关文章
- 关于c++ 感想
- C++ one more time
- C++ 抓取和批量下载网站上的图片或文件
- C/C++基础讲解(六十二)之系统篇(显示目录内容/读取磁盘文件)
- C/C++读写文件
- C++与C#有关对库(动态库dll,静态库.lib)文件的调用
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- C++设计模式详解之外观模式解析
- C++Qt开发——阻止系统休眠方法
- 【华为OD机试 2023最新 】最多等和不相交连续子序列(C++)
- C++面试题1,一般赋值语句与输出
- 2013级C++第15周(春)项目——输入输出流及文件文件操作
- C++ 中的比較函数
- C/C++使用技巧(二十二):再谈C/C++多文件编译生成与调用的静态库/动态库[本文所有源码分享]
- Ubuntu20.04下,qt交叉编译报错::15: warning: identifier ‘nullptr‘ is a keyword in C++11 [-Wc++0x-compat]
- C++ vector与数组转换写入/读出文件(十八)
- C++使用boost 1.75版本来读写JSON文件
- c++ 文件写样例
- VC++从工程的rc资源中将资源文件取出来或读出来(附源码)
- C++如何将Unicode文本写到日志文件中
- webrtc Native C++ 视频采集详解 从应用层到源码层
- Foxit PDF SDK for Mac (C++ Library)
- 机器人C++库(4)Robotics Library 例程一之DH模型参数及四元数、变换矩阵
- 【社区图书馆】《Primer C++ 第五版》
- 第一章 C++编程基础——1.7文件读写
- C++使用技巧(八):输入输出读写文件