/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称:score.cpp
* 作 者: 徐本锡
* 完成日期: 2013 年 03 月 09 日
* 版本号: v1.0
* 输入描述:已经在程序中初始化
* 问题描述:一些同学的学号、姓名、C++、
高数、英语成绩,定义一个学生成绩的结构体数组,其中的成员包括学号(char num[12])、姓名
(name)、三门课的成绩(grade)、总分(score))。
* 输出: (1)从文件中读出数据,存放到你定义的结构体数组中;
(2)输出结构体数组中所有同学的记录。
*/
#include<iostream>
#include <cstdlib> //在codeblocks下,exit(1)需要这个头文件
#include<fstream>
using namespace std;
struct Score
{
char num[13]; //学号...........括号内为12时名字输出2次?????
char name[12]; //姓名
double C; //C++成绩
double math; //数学成绩
double English; //英语成绩
double grade;//总分数
struct Score *next;//下一个地址
};
int main()
{
int sum=0;
double sumg=0;
Score *head=NULL,*p,*q;
ifstream in("score.txt",ios::in);
if(!in)
{
cerr<<"open error!"<<endl;
exit(1);
}
while(!in.eof())//文件没有读取完
{
p=new Score;
in>>p->num>>p->name>>p->C>>p->math>>p->English;
p->next=NULL;
p->grade=(p->C+p->math+p->English);
sumg=sumg+p->grade;
if(sum==0)
head=p;
else
q->next=p;
q=p;
++sum;
}
in.close();
double averange=sumg/sum;
p=head;
cout<<"总分不低于平均总成绩,并且没有挂科的同学有:"<<endl;
while(p!=NULL)
{
if(p->grade>=averange&&p->C>=60&&p->English>=60&&p->math>=60)
{
cout<<p->num<<" "<<p->name<<" "<<p->grade<<endl;
}
p=p->next;
}
return 0;
}