问题及代码:
/*
*Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:莉莉.cpp
*作者:李莉
*完成日期:2014年11月28日
*版本号:v1.0
*
*问题描述:利用文件输入,对成绩进行按姓名排序和按成绩排序
*程序输入:无输入
*程序输出:排序后的成绩单
*/
#include <fstream>//利用文件输入必备的头文件
#include <cstdlib>//利用文件输入时,打开文件不正确退出程序时必备的头文件
#include <iostream>
#include <string>//string必备的头文件
using namespace std;
const int n=1000;
int main()
{
int i,j,t,num=0;
string temp;
ifstream infile("s.txt",ios::in);//打开文件
string name[n];
double score[n];
if(!infile)
{
cerr<<"open error"<<endl;
exit(1);
}
while(infile>>name[num]>>score[num])//把文件中的姓名和成绩依次输入到name和score数组
{
num++;//学生人数,依次增加
}
infile.close();//用完文件后必须要关闭
for(j=0; j<num; j++)
{
for(i=0; i<num-j-1; i++)
{
if(score[i]<score[i+1])
{
t=score[i];
score[i]=score[i+1];
score[i+1]=t;
temp=name[i];
name[i]=name[i+1];
name[i+1]=temp;
}
}
}
cout<<"按成绩排序为:"<<endl;
for(i=0; i<num; i++)
{
cout<<name[i]<<":"<<score[i]<<endl;
}
for(j=0; j<num; j++)
{
for(i=0; i<num-j-1; i++)
{
if (name[i]>name[i+1])
{
temp=name[i];
name[i]=name[i+1];
name[i+1]=temp;
t=score[i];
score[i]=score[i+1];
score[i+1]=t;
}
}
}
cout<<"按姓名排序为:"<<endl;
for(i=0; i<num; i++)
{
cout<<name[i]<<":"<<score[i]<<endl;
}
return 0;
}
运行结果:
心得体会:最最纠结的是把文件中的名字和成绩分别输入带对应的数组中。。可桑心了。。纠结了半天。。最后问的童宇童鞋。。嗷呜。。。