第十四周项目 2 带姓名的成绩单(从文件中输入成绩,成绩姓名排序)

/*
 *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循环语句来进行会比较容易,其他的和上一个程序没有什么区别。

 

学习心得 :

   写这个程序的时候明白了温故而知新的重要性,一定要及时复习前面的知识点,才能更好的写出程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值