《C语言及程序设计》实践参考——成绩统计
2015-04-20 17:03
441 查看
返回:贺老师课程教学链接 项目要求
【项目3-成绩统计】
文件english.dat(这个文件中的数据量,超出了你之前所有的体验)中已经有了学生的英语考试成绩数据。
(1)请编程从english.dat中读取数据,求出这次考试的平均成绩,并统计输出优秀人数和不及格人数。请在下面程序基础上填空完成:
(2)扩充上面的程序,要求将统计结果保存到数据文件statictic.dat中(提示:要用fprintf写入文件了)
[参考解答]
(3)(用柱状图输出)编程序,求出这次考试的平均成绩,并统计各分数段的人数(优秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。运行结果如图所示。试着将输出界面改变成成下面的样子(仅变输出方式)
[参考解答]
【项目3-成绩统计】
文件english.dat(这个文件中的数据量,超出了你之前所有的体验)中已经有了学生的英语考试成绩数据。
(1)请编程从english.dat中读取数据,求出这次考试的平均成绩,并统计输出优秀人数和不及格人数。请在下面程序基础上填空完成:
#include <stdio.h> #include <stdlib.h> int main() { int score; //读入的成绩 int excelent=0, fail=0,count=0;//分别代表优秀、不及格人数、总人数 double sum=0,ave; //sum: 成绩和,ave: 平均分 //以输入的方式(ios::in)打开文件 FILE ____(1)____; fp=fopen(____(2)____); if(fp==NULL) { printf("open error!\n"); exit(1); } while(fscanf(____(3)____)!=EOF) //当读取成功…… { count++; sum+=score; if(____(4)____) excelent++; else if(score<60) ____(5)____; } ____(6)____; //下面输出结果 ave=sum/count; printf("总人数为:%d\n", count); printf("平均成绩为:%.2f\n", ave); printf("优秀人数:%d\n", excelent); printf("不及格人数:%d\n", fail); return 0; }[参考解答]
#include <stdio.h> #include <stdlib.h> int main() { int score; //读入的成绩 int excelent=0, fail=0,count=0;//分别代表优秀、不及格人数、总人数 double sum=0,ave; //sum: 成绩和,ave: 平均分 //以输入的方式(ios::in)打开文件 FILE *fp; fp=fopen("english.dat","r"); if(fp==NULL) { printf("open error!\n"); exit(1); } while(fscanf(fp, "%d", &score)!=EOF) //当读取成功…… { count++; sum+=score; if(score>=90) excelent++; else if(score<60) fail++; } fclose(fp); //读入完毕要关闭文件 //下面输出结果 ave=sum/count; printf("总人数为:%d\n", count); printf("平均成绩为:%.2f\n", ave); printf("优秀人数:%d\n", excelent); printf("不及格人数:%d\n", fail); return 0; }
(2)扩充上面的程序,要求将统计结果保存到数据文件statictic.dat中(提示:要用fprintf写入文件了)
[参考解答]
#include <stdio.h> #include <stdlib.h> int main() { int score; //读入的成绩 int excelent=0, fail=0,count=0;//分别代表优秀、不及格人数、总人数 double sum=0,ave; //sum: 成绩和,ave: 平均分 //以输入的方式(ios::in)打开文件 FILE *fp; fp=fopen("english.dat","r"); if(fp==NULL) { printf("source file open error!\n"); exit(1); } while(fscanf(fp, "%d", &score)!=EOF) //当读取成功…… { count++; sum+=score; if(score>=90) excelent++; else if(score<60) fail++; } fclose(fp); //读入完毕要关闭文件 //下面输出结果 ave=sum/count; printf("总人数为:%d\n", count); printf("平均成绩为:%.2f\n", ave); printf("优秀人数:%d\n", excelent); printf("不及格人数:%d\n", fail); fp=fopen("statictic.dat","w"); if(fp==NULL) { printf("output file open error!\n"); exit(1); } fprintf(fp, "总人数为:%d\n", count); fprintf(fp, "平均成绩为:%.2f\n", ave); fprintf(fp, "优秀人数:%d\n", excelent); fprintf(fp, "不及格人数:%d\n", fail); fclose(fp); //读入完毕要关闭文件 //下面打开文件查看结果 return 0; }
(3)(用柱状图输出)编程序,求出这次考试的平均成绩,并统计各分数段的人数(优秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。运行结果如图所示。试着将输出界面改变成成下面的样子(仅变输出方式)
[参考解答]
#include <stdio.h> #include <stdlib.h> int main() { int score; //读入的成绩 int rate; //根据成绩确定的等级 int excelent=0, good=0, medium=0, passing=0, fail=0,count=0;//分别代表优秀、不及格人数、总人数 double sum=0,ave; //sum: 成绩和,ave: 平均分 //以输入的方式(ios::in)打开文件 FILE *fp; fp=fopen("english.dat","r"); if(fp==NULL) { printf("source file open error!\n"); exit(1); } while(fscanf(fp, "%d", &score)!=EOF) //当读取成功…… { count++; sum+=score; rate=score/10; //rate用于分出“档次” switch(rate) { case 10: case 9: excelent++; break; case 8: good++; break; case 7: medium++; break; case 6: passing++; break; default: fail++; break; } } fclose(fp); //读入完毕要关闭文件 //下面输出结果,不同的数字对应的#数目不同 ave=sum/count; int max; //将存储这几个分数段中的最多人数 max=excelent; if(max<good) max=good; if(max<medium) max=medium; if(max<passing) max=passing; if(max<fail) max=fail; printf("平均成绩为:%.2f\n", ave); //现确定各个档次一共输出50个#,据此按比例可算出各档需要多少格子 printf("优秀 "); int l=((double)excelent)/max*50; int i; for(i=0; i<l; ++i) printf("#"); printf(" %d\n", excelent); printf("良好 "); l=((double)good)/max*50; for(i=0; i<l; ++i) printf("#"); printf(" %d\n", good); printf("中等 "); l=((double)medium)/max*50; for(i=0; i<l; ++i) printf("#"); printf(" %d\n", medium); printf("及格 "); l=((double)passing)/max*50; for(i=0; i<l; ++i) printf("#"); printf(" %d\n", passing); printf("挂科 "); l=((double)fail)/max*50; for(i=0; i<l; ++i) printf("#"); printf(" %d\n", fail); return 0; }
相关文章推荐
- 《C语言及程序设计》实践参考——学生成绩统计
- 《C语言及程序设计》实践参考——分支嵌套流程图-五等级成绩
- 《C语言及程序设计》实践参考——成绩等级
- 《C语言及程序设计》实践参考——成绩处理函数版
- 《C语言及程序设计》实践参考——血型统计
- 《C语言及程序设计》实践参考——查成绩
- 《C语言及程序设计》实践参考——成绩处理
- 《C语言及程序设计》实践参考——学生成绩处理
- 《C语言及程序设计》实践参考——分支嵌套流程图-三等级成绩
- 《C语言及程序设计》实践参考——发工资
- 第13周 《C语言及程序设计》实践参考——定期存款利息计算器
- 《C语言及程序设计》实践参考——年龄几何
- 《C语言及程序设计》实践参考——算工资
- 《C语言及程序设计》实践参考——本月有几天?
- 《C语言及程序设计》实践参考——求最大公约数
- 《C语言及程序设计》实践参考——次数不定的循环的流程图
- 《C语言及程序设计》实践参考——翻转数组
- 《C语言及程序设计》实践参考——各种“棋盘”
- 《C语言及程序设计》实践参考——个税计算器之码数分离
- 《C语言及程序设计》实践参考——二进制文件浏览器