/
*copyright (c)2014,烟台大学计算机学院
*All rights reserved
*文件名称:123.cpp
*作者:孙春红
*完成日期:2014年11月30日
*版本号:v1.0
*
*问题描述:设score[num]数组中存储num名同学的C++成绩,增加一个数组string name[num]并赋初值,
表示同学们的姓名。这两个数组中,每名同学的姓名与成绩的下标要始终保持一致(例如
name[i]和score[i]表示同一位同学(下标为i)的姓名和C++成绩,否则会张冠李戴)。从
score.txt中读入数据,将数据进行排序 。
*输入描述:略。
*程序输出:输出按同学们成绩大小排序的结果。
*/
#include<fstream>
#include<iostream>
#include<cstdlib>
using namespace std;
const int num=94;
int main()
{
int i,j,t,n;
string temp;
string name[num]= {};
double score[num]= {};
ifstream infile("score.txt",ios::in);
if (!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for (n=0; n<num; n++)
{
infile>>name[n];
if (infile!="")
infile>>score[n];
}//读入数据,使程序既能读入成绩也能读入姓名。
infile.close();//不要忘记关闭数据文件
for (i=0; i<num-1; i++)
for(j=0; j<num-1-i; 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;
}
}//冒泡排序
cout<<"按成绩由小到大排序的结果:"<<endl;
for (j=0; j<num; j++)
{
cout<<name[j]<<": "<<score[j]<<'\t';
cout<<endl;
}
return 0;
}
运行结果:
知识点总结:
学会文件的操作,将文件中的数据读取,分别注入两个数组中,然后进行冒泡排序。
学习心得:
在写代码时,不要忘记头文件的声明。而且在定义数量时,注意要数量正好,容易出空的数据。