用结构体数组做计算
2013-03-13 11:15
555 查看
【项目3-用结构体数组作计算】接项目2, (1)从文件中读出数据,存放到你定义的结构体数组中,即项目2(1); (2)求出每名同学的总分(可以在读入过程中“顺便”计算); (3)按总分排序(降序); (4)输出排序后的成绩单; (5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。 #include <iostream> #include <fstream> #include <cstdlib> //在codeblocks下,exit(1)需要这个头文件 using namespace std; struct Student { char num[13]; //尽管都是由数字构成,但看作为字符更合适。学号12位,定义为13个字符,便于处理成字符串 char name[10]; //每个汉字占两个字节,中国人的名字,5个汉字够用 int cpp; int math; int english; int grade; }; const int N=200; int main( ) { int i, j, k, stuNum=0; //定义结构体数组 Student stu , t_stu; //(1)从文件中读出数据,存放到你定义的结构体数组中; //(2)求出每名同学的总分(可以在读入过程中“顺便”计算); ifstream infile("score.txt",ios::in); //以输入的方式打开文件 if(!infile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } i=0; while(!infile.eof()) { 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(); //(3)按总分排序(降序),用了选择排序 for(i=0; i<stuNum-1; i++) { k=i; for(j=i+1; j<stuNum; j++) if(stu[j].grade>stu[k].grade) k=j; //排序的依据是总分,此for循环找出当前总分最高的学生的下标k t_stu=stu[k]; //交换,结构体变量可以直接赋值。当然,结构体数组元素的值可以赋值给结构体变量 stu[k]=stu[i]; stu[i]=t_stu; } //(4)输出排序后的成绩单; for(i=0; i<stuNum; ++i) { cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].cpp<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].grade<<endl; } //(5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖学金。请输出可以得奖学金同学的名单。 cout<<"恭喜以下同学获得奖学金(奖学金用于改善学习条件,杜绝请客吃饭!)"<<endl; i=0,j=1; while (j<=30) { if (stu[i].cpp>=60&&stu[i].math>=60&&stu[i].english>=60) { cout<<j<<'\t'<<stu[i].name<<'\t'<<stu[i].grade<<endl; j++; } i++; } //如果有人的总分与第30名相同,且没有挂科,不给他奖学金是不合理的,下面的输出弥补了这一问题,加名额吧 cout<<"恭喜以下同学获得奖学金(奖学金用于改善学习条件,杜绝请客吃饭!)"<<endl; i=0,j=1; int g; while (j<=30) { if (stu[i].cpp>=60&&stu[i].math>=60&&stu[i].english>=60) { cout<<j<<'\t'<<stu[i].name<<'\t'<<stu[i].grade<<endl; g=stu[i].grade; j++; } i++; } while(g==stu[i].grade)//和刚才输出的最后一个总分相同的同学都有机会获得奖学金 { if (stu[i].cpp>=60&&stu[i].math>=60&&stu[i].english>=60) { cout<<j<<'\t'<<stu[i].name<<'\t'<<stu[i].grade<<endl; j++; } i++; } return 0; }
体会:
会选择法来进行总分排序。考虑到多种情况。
相关文章推荐
- 定义一个结构体变量(包括年、月、日),编写程序,要求输入年月日,程序能够计算并输出改日是本年中的第几天。注意闰年问题。(数组)
- 第二周项目三—用结构体数组做计算
- 二叉树计算以结构体数组元素为变量的表达式
- 第二周C++上机报告(用结构体数组做计算)
- 第二周上机任务项目3-用结构体数组做计算
- 用结构体数组做计算
- 动态计算结构体数组长度
- C++第2周项目3——用结构体数组作计算
- 2013c++ 第二周任务-用结构体数组做计算
- 用结构体数组做计算
- 结构体数组计算
- 第2周项目三-用结构体数组做计算
- 2013第二周上机任务项目三(用结构体数组做计算)
- 第二周 项目三:用结构体数组作计算
- sizeof - 指针,数组,变量,结构体字节对齐-计算
- 项目3-用结构体数组作计算
- 结构体计算数组
- 计算结构体、数组、指针的sizeof
- 用结构体数组作计算
- 项目三--用结构体数组作计算