/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称:score.cpp
* 作 者:李蒙
* 完成日期: 2013 年 03 月 13 日
* 版本号: v1.0
* 输入描述:已经在程序中初始化
* 问题描述:在程序中建立一个动态链表:每读入一个同学的数据,计算总分,分配节点的存储空间并赋值,建立前后相连的关系。
在建立链表的同时,要进行统计,以便于求出所有同学总分的平均成绩。
* 输出:
*/
#include <iostream>
#include <fstream>
using namespace std;
struct Student
{
char num[13];
char name[10];
int c;
int math;
int english;
int grade;
struct Student *next; //指向下一节点的指针
};
int main()
{
Student *head=NULL,*p,*q;
int stuNum=0,i,sum=0,ave;
ifstream infile("score.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
//下面从文件中读取数据,同时建立动态链表,并为求总分之和
while(!infile.eof())
{
p=new Student;
infile>>p->num>>p->name>>p->c>>p->math>>p->english;
p->grade=p->c+p->math+p->english;
sum=sum+p->grade;
p->next=NULL;
if(stuNum==0)
head=p;
else
q->next=p;
q=p;
stuNum++;
}
infile.close();
ave==sum/stuNum;
cout<<"平均总分为:"<<ave<<endl;
cout<<"总分高于平均总分且没有挂科的同学有:"<<endl;
p=head;
i=1;
while(p!=NULL)
{
if(p->grade>=ave&&p->c>=60&&p->math>=60&&p->english>=60)
{
cout<<i<<" "<<p->num<<" "<<p->name<<" "<<p->grade<<endl;
i++;
}
p=p->next;
}
return 0;
}
输出结果:
心得体会:!