zoukankan      html  css  js  c++  java
  • 5.11返校测试T3

    题3:成绩单(result.cpp/in/out)


    【问题描述】

    又考试了,这次考试的人数特别多,每个人的学号很特别,是用字符串表示的(不超过30位),每次考试结束后,成绩统计是一件很重要的事情。
    老师们都很关心学生的成绩,于是他们把学生的成绩按学号排列(字典顺序,学号全为小写字母,从小到大排列)(不排成绩),并统计各个分数,及分数段的人数,以及满分人员(满分要奖励XXX奖学金的)。

    【输入格式】

    第一行:一个数n(n<=130000人)。
    以下n行:每行两个信息,分别为学号,分数(1~150分)。

    【输出格式】

    第一行:各个分数段(空格隔开)(例如1~10 11~20„„(见例样,不包括150分的人数)。

    第二行:各个分数段的人数(空格隔开,没有则输出0)。

    接下来的n行,分别为n个学生的学号,成绩,(空格隔开)。

    再接下来的一行为满分的人的人数x(如果没有则为0)(保证x不超过10000)。

    接下来的x行为满分人的学号(如果x为0则为一行‘No’)(按字典序从小到大排序)。

    注意:

    一行若有多个数据,每一个数据之间用空格隔开,最后一个数据后不允许有空格。分数段中没有0分和150分的。

    【样例输入】

    3
    bid 50
    wxy 85
    alc 55
    

    【样例输出】

    1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 140~149
    0 0 0 0 0 2 0 0 1 0 0 0 0 0 0
    alc 55
    bid 50
    wxy 85
    0
    No
    

    【提示】

    无(个人提示:注意字母大小写!)


    下面是这个题的思路QWQ

    先将每个人的学号和成绩进行输入,记录满分的同学个数,并且统计各分数段相应的人数,之后将每个人的名字根据字典序排序,然后根据题目要求输出分数段和每个分数段的人数,再输出每个人的名字与成绩,然后输出满分的人数和满分同学的学号(如果没有,这输出No)


    下面是ac题解

    #include<cstring>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,s[20]={},shigh=0;//shigh用于记录满分的人数
    struct node{
    	string name;
    	int score;
    }a[130000];//用结构体方便输出学号与成绩
    bool cmp(node x,node y) //排序的函数
    {
    	return(x.name<y.name);
    }
    int main() 
    {
    //	freopen("result.in","r",stdin);
    //	freopen("result.out","w",stdout);
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i].name>>a[i].score;
    		if(a[i].score==150)
    			shigh++;//统计满分人数
    		s[a[i].score/10]++;//统计每个分数段的人数
    	}
    	cout<<"1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 140~149"<<endl;
    	for(int i=0;i<=14;i++)
    		printf("%d ",s[i]);
    	cout<<endl;
    	sort(a+0,a+n+1,cmp);//根据字典序进行排序
    	for(int i=1;i<=n;i++) 
    		cout<<a[i].name<<" "<<a[i].score<<endl;
    	cout<<shigh<<endl;
    	if(shigh==0) //没有满分输出“No”
    		cout<<"No"<<endl;
    	else//有满分的情况
    	{
    		for(int i=1;i<=n;i++) 
    			if(a[i].score==150)
    				cout<<a[i].name<<endl;
    	}
    	return 0;//结束
    }
    
  • 相关阅读:
    Haproxy基于ACL做访问控制
    K8s之Prometheus监控
    kubernetes之PV及PVC案例
    K8s常见示例
    K8s之Web服务
    Ansible 部署k8s
    K8s之网络通信
    创建资源对象实例
    kubeadm搭建K8s集群
    Go基础之函数递归实现汉诺塔
  • 原文地址:https://www.cnblogs.com/Kyriech-Francis/p/Answer_20200511_T3.html
Copyright © 2011-2022 走看看