/*
*Copyright (C) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称 :mian.cpp
*作 者 :韩娟
*完成日期 :2014年11月27日
*版 本 号 :v1.0
*
*问题描述 : 从文件中读入成绩,按成绩高低输出,和按姓名排序输出
*输入描述 :略
*程序输出 :按成绩高低输出,和按姓名排序输出
*/
#include <fstream> //操作文件必写
#include<cstdlib> //调用exit(1)需要包含cstdlib
#include<iostream>
#include<string>
using namespace std;
const int num=94;
int main()
{
int i=0,j=0,t,a=0;
string temp,name[num];
double score[num];
ifstream infile("score.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0; i<num; i++)
{
infile>>name[i];
infile>>score[i];
if(name[i]=="")
break;
a++;
}
infile.close();
cout<<"同学们按成绩排名为:"<<endl;
for(i=0; i<a-1; ++i)
{
for(j=0; j<a-i-1; ++j)
if(score[j]>score[j+1])
{
t=score[j];
score[j]=score[j+1];
score[j+1]=t;
temp=name[j];
name[j]=name[j+1];
name[j+1]=temp;
}
}
for(j=0; j<num; ++j)
{
cout<<name[j]<<":"<<score[j]<<endl;
}
cout<<endl;
cout<<"同学们按姓名排序为:"<<endl;//(2)按姓名排序并输出结
for(i=0; i<a-1; ++i)
{
for(j=0; j<a-i-1; ++j)
if(name[j]>name[j+1])
{
temp=name[j];
name[j]=name[j+1];
name[j+1]=temp;
t=score[j];
score[j]=score[j+1];
score[j+1]=t;
}
}
for(j=0; j<num; ++j)
{
cout<<name[j]<<":"<<score[j]<<endl;
}
}
知识点总结 :
这个程序用到了读入程序的知识点,一开始是要现在前面把所有的文件数据都读入,然后才开始写后面的程序,主要是前面的文件读入,要用一个for循环语句来进行会比较容易,其他的和上一个程序没有什么区别。
学习心得 :
写这个程序的时候明白了温故而知新的重要性,一定要及时复习前面的知识点,才能更好的写出程序。