杂题串讲:结构体+sort ()+ 文件操作

结构体:是学习树、图以及高级数据结构必备知识,也常常用来存储一条信息记录(学生成绩等)。

sort():灵活运用大大缩短因排序开支的代码。

文件操作:是每个信竞生考试必备技能。

 

例题:文件输入n(n<=100)个学生信息(姓名、数学成绩、语文成绩),要求安照(总成绩)由高——>低排序 按照每行输出最终信息。【此题没有总分相同情况】

输入样例: 

3
zhangsan   100  80.5

lisi            64     21

wangwu   96     99.5

输出样例(下图红框中是 输出):

 

 

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
struct stu{
    string s;
    double chinese;
    double math;
    double sum;
}student[101];
bool cmp(const stu &a,const stu &b){
    return a.sum>b.sum;  //确定由大—小 排序 
}
int main(){
    freopen("stu.in","r",stdin);
    freopen("std.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>student[i].s>>student[i].math>>student[i].chinese;
        student[i].sum=student[i].math+student[i].chinese;
    }
    sort(student+1,student+n+1,cmp);
    for(int i=1;i<=n;i++)
        cout<<student[i].sum<<" "<<student[i].s<<" "<<student[i].math<<" "<<student[i].chinese<<endl;
    return 0;
}
View Code

 

例题改进:

改进例题:文件输入n(n<=100)个学生信息(姓名、数学成绩、语文成绩),要求安照(总成绩)由高——>低排序 按照每行输出最终信息。
             说明【如果总分相同,按照姓名字典序排列:a,b,c,d...】

输入样例: 

3
zhangsan   100  80.5
lisi           80.5     100
wangwu   96     99.5

输出样例:【下图红框中是输出】

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
struct stu{
    string s;
    double chinese;
    double math;
    double sum;
}student[1000010];
bool cmp(const stu &a,const stu &b){
    if(a.sum==b.sum)       //只需要在cmd中增加词句 如果成绩相同,按照a.s小于输出。
        return a.s<b.s;    
    return a.sum>b.sum;
}
int main(){
    //freopen("stu.in","r",stdin);
    //freopen("std.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>student[i].s>>student[i].math>>student[i].chinese;
        student[i].sum=student[i].math+student[i].chinese;
    }
    sort(student+1,student+n+1,cmp);
    for(int i=1;i<=n;i++)
        cout<<student[i].sum<<" "<<student[i].s<<" "<<student[i].math<<" "<<student[i].chinese<<endl;
    return 0;
}

 最后:本题文件操作图例:

 

posted on 2019-02-24 22:09  lcdxjsj  阅读(151)  评论(0)    收藏  举报

导航