第十四周项目二—带姓名的成绩单读取数据操作版

来源:互联网 发布:数据库采集 编辑:程序博客网 时间:2024/05/17 01:42
/*  * Copyright (c) 2014, 烟台大学计算机学院  * All rights reserved.  * 文件名称:test.cpp  * 作    者:刘佳琦  * 完成日期:2014年 11 月 26 日  * 版 本 号:v1.0  *  * 问题描述:设score[8]数组中存储8名同学的C++成绩,增加一个数组string name[8]并赋初值,表示同学们的姓名。这两个数组中,每名同学的姓名与成绩的下标要始终保持一致(例如name[i]和score[i]表示同一位同学(下标为i)的姓名和C++成绩,否则会张冠李戴)。 (1)输出按成绩排序后的同学的名单; (2)输出按同学姓名排序后的成绩单(排序对象是字符串)。  * 输入描述:无  * 程序输出:(1)输出按成绩排序后的同学的名单; (2)输出按同学姓名排序后的成绩单(排序对象是字符串)。  */  #include <fstream>#include<iostream>#include<cstdlib>#include<string>using namespace std;int main( ){    int i,j,t,n=0;    const int num=1000;    string p;    string 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;        n++;    }    infile.close();    cout<<"按成绩排序:"<<endl;    for(j=0; j<n-1; j++)        for(i=0; i<n-1-j; i++)        {            if(score[i]<score[i+1])            {                t=score[i];                score[i]=score[i+1];                score[i+1]=t;                p=name[i];                name[i]=name[i+1];                name[i+1]=p;            }        }    for(i=0; i<n; i++)        cout<<name[i]<<" "<<score[i]<<endl;    cout<<"按姓名排序:"<<endl;    for(j=0; j<n-1; j++)        for(i=0; i<n-1-j; i++)        {            if(name[i]<name[i+1])            {                t=score[i];                score[i]=score[i+1];                score[i+1]=t;                p=name[i];                name[i]=name[i+1];                name[i+1]=p;            }        }    for(i=0; i<n; i++)        cout<<name[i]<<" "<<score[i]<<endl;        return 0;}


运行结果:

学习心得:刚开始一直读取失败,发现是自己命名的时候多此一举,后面贺老师指出来我这个问题,但是还是无法输出,再三检查才发现又忘记赋初值了!!

0 0
原创粉丝点击