第17周报告2 动态链表

来源:互联网 发布:淘宝提前收款钱不见了 编辑:程序博客网 时间:2024/06/06 01:00
 

第17周报告2:
实验目的:学会利用结构体变量

实验内容:实现机构体变量的调用
/*
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 动态链表
* 作 者: 姜雅明
* 完成日期: 2011 12 16
* 版本号: 1.0

* 对任务及求解方法的描述部分
* 输入描述:score中的数据

* 问题描述:建立一个动态链表

* 程序输出:动态链表

*/

#include<fstream>#include<iostream>#include<iomanip>#include<string>using namespace std;void output_score(int num);void input_score(int num);struct Student{char num[12];string name;float grade[4];struct Student *next;};Student *head = NULL, *p, *q;double sum_score = 0;int main( ){int num = 181;input_score(num);cout << "总分高于平均成绩并且没有挂科的同学:\n" << endl;output_score(num);return 0;}void input_score(int num){int i;ifstream infile("score.txt", ios::in);if(!infile){cerr << "open error!" << endl;exit(1);}for(i = 0; i < num; i++){p = new Student;//用new运算符开辟一个存放Student型数据的空间infile >> p->num >> p->name >> p->grade[0] >> p->grade[1] >> p->grade[2];p->grade[3] = p->grade[0] + p->grade[1] + p->grade[2];sum_score = sum_score + p->grade[3];p->next = NULL;if (i == 0){head = p;}else{q->next = p;}q = p;}infile.close();}void output_score(int num){double ave_score=sum_score/num;cout << setiosflags(ios::left) << setw(15) << "学号" << setw(10) << "姓名" << setw(10) << "总 成绩" << endl;p=head;while(p!=NULL){if(p->grade[3] > ave_score && p->grade[1] >= 60 && p->grade[2] >= 60 && p->grade[3] >= 60){cout << setw(15) << p->num << setw(10) << p->name << p->grade[3] << endl;}p = p->next;}cout << endl;}


 

运行结果:

上机感言:

感觉有点乱···在建立链表时还要仔细想一下。还要多多努力啊···

原创粉丝点击