第十七周项目六学生成绩统计(5)
来源:互联网 发布:消失的夫妻后续知乎 编辑:程序博客网 时间:2024/05/16 11:06
问题及代码:
/* * Copyright (c) 2014, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:test.cpp * 作 者:郝俊宇 * 完成日期:2014年 12 月 23 日 * 版 本 号:v1.0 * * 问题描述:score.txt中是一些同学的学号、姓名、C++、高数、英语成绩,利用前面定义的结构体数组,读取文件score.txt中的数据,完成下面的应用:•从文件中读出数据,存放到结构体数组中;•求出每名同学的总分(可以在读入过程中“顺便”计算);•输出结构体数组中所有同学的记录。•按总分排序(降序);•输出排序后的成绩单;•有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。若符合得将的最后一名同学有重复(例如总分全为S),则总分为S的同学全得奖。从文件中读取数据的参考代码 * 输入描述:无 * 程序输出:对应的结果 */ #include <cstdlib>#include <fstream>#include <iostream>using namespace std;struct Student{ char num[13]; char name[10]; int cpp; int math; int english; int grade; double average;};const int N=200;int main(){ int i,j,k,q,stuNum=0,h; Student stu[N],t; ifstream infile("score.txt",ios::in); //以输入的方式打开文件 if(!infile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } i=0; while(infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english) { stu[i].grade=stu[i].cpp+stu[i].math+stu[i].english; ++stuNum; ++i; } infile.close(); cout<<"成绩单:"<<endl; for(q=0; q<stuNum; q++) { stu[q].grade=stu[q].cpp+stu[q].math+stu[q].english; cout<<stu[q].num<<'\t'<<stu[q].name<<'\t'<<stu[q].cpp<<'\t'<<stu[q].math<<'\t'<<stu[q].english<<'\t'<<stu[q].grade<<endl; } system("PAUSE"); cout<<"降序排序后的成绩单:"<<endl; for(j=0; j<stuNum-1; j++) { for(k=0; k<stuNum-j-1; k++) if(stu[k].grade<stu[k+1].grade) { t=stu[k]; stu[k]=stu[k+1]; stu[k+1]=t; } } for(h=0; h<stuNum; h++) cout<<stu[h].num<<'\t'<<stu[h].name<<'\t'<<stu[h].cpp<<'\t'<<stu[h].math<<'\t'<<stu[h].english<<'\t'<<stu[h].grade<<endl; system("PAUSE"); cout<<"获得奖学金的同学为:"<<endl; int s=0,l=1,m; while(l<=30) { if(stu[s].cpp>=60&&stu[s].math>=60&&stu[s].english>=60) { cout<<l<<'\t'<<stu[s].name<<'\t'<<stu[s].grade<<endl; m=stu[s].grade; l++; } s++; } while(m==stu[s].grade)//和刚才输出的最后一个总分相同的同学都有机会获得奖学金 { if (stu[s].cpp>=60&&stu[s].math>=60&&stu[s].english>=60) { cout<<l<<'\t'<<stu[s].name<<'\t'<<stu[s].grade<<endl; l++; } s++; } return 0;}
运行结果:
知识点总结:
从文件读取数据的应用,结构体数组的应用
学习心得:
本来打算根据上一问的程序改的,结果改到一半就不会了,就又按照老师写的方式写的。
0 0
- 第十七周项目六学生成绩统计(5)
- 第十七周项目六:学生成绩统计
- 第十七周项目六 学生成绩统计
- 第十七周 项目六:学生成绩统计(6.4)
- 第十七周 项目六:学生成绩统计(6.5)
- 第十七周项目六:学生成绩统计(1)
- 第十七周项目六学生成绩统计(4)
- 第十七周项目六 学生成绩统计(1-3)
- 第十七周项目六-学生成绩统计--1
- 第十七周项目六—学生成绩统计
- 第十七周项目六—学生成绩统计
- 第十七周项目六—学生成绩统计
- 第十七周 【项目6-学生成绩统计】(5)
- 第十七周项目 6 学生成绩统计(5)
- 第十七周项目6-学生成绩统计(5)
- 第十七周项目六学生成绩统计(1)(2)(3)
- 第十七周 项目六:学生成绩统计(6.1&6.2&6.3)
- 第十七周项目六——学生成绩统计(1~3)
- cocos2dx2.2.3重要学习笔记
- 迟是迟了一些,亡羊补牢犹时未晚
- NRF51822项目实战
- 字符串的替换,题很简单,关键是以EOF结尾的输入,麻烦
- http请求头
- 第十七周项目六学生成绩统计(5)
- android模拟器错误No space left on device解决方法
- openstack搭建记录
- Android中如何解决Thread第二次Thread.start()报错
- Android带参数的BUTTON
- 数字三角形(POJ1163)
- QDialog对话框添加最大最小化按钮
- 为一个驱动添加Android中间层的步骤
- 栈的建立,删除,-----多项式相加