zoukankan      html  css  js  c++  java
  • 【PAT】B1080 MOOC期终成绩(25 分)

    还是c++好用,三部分输入直接用相同的方法,
    用map映射保存学生在结构体数组中的下标。
    结构体保存学生信息,其中期末成绩直接初始化为-1,
    注意四舍五入
    此题还算简单

    #include<iostream>
    #include<stdio.h>
    #include<map>
    #include<string>
    #include<algorithm>
    using namespace std;
    struct stu{
    	string name;
    	int gp = -1, gm = -1, gf = -1, G = 0;
    }arr[30000];
    int num=0;
    bool cmp(stu A,stu B){
    	if(A.G!=B.G) return A.G>B.G;
    	else return A.name<B.name;
    }
    int main() {
    
    	int P, M, N; 
    	scanf("%d%d%d", &P, &M, &N);
    	map<string, int> mp;			//mp用来保存学生结构体在数组中的下标
    	for (int i = 0; i<P; i++) {//在线编程
    		string id; int score;
    		cin >> id >> score;
    		if(mp.count(id)==0){//如果学生第一次出现
    			mp[id] = num++;
    			arr[mp[id]].name = id;
    		}
    		arr[mp[id]].gp=score;
    	}
    	for (int i = 0; i<M; i++) {//其中
    		string id; int score;
    		cin >> id >> score;
    		if(mp.count(id)==0){//如果学生第一次出现
    			mp[id] = num++;
    			arr[mp[id]].name = id;
    		}
    		arr[mp[id]].gm=score;
    	}
    	for (int i = 0; i<N; i++) {//期末
    		string id; int score;
    		cin >> id >> score;
    		if(mp.count(id)==0){//如果学生第一次出现
    			mp[id] = num++;
    			arr[mp[id]].name = id;
    		}
    		arr[mp[id]].gf=score;
    
    	}
    	for(int i=0;i<num;i++){
    		if(arr[i].gm>arr[i].gf)
    			arr[i].G=(int)(arr[i].gm*0.4+arr[i].gf*0.6+0.5);
    		else
    			arr[i].G=arr[i].gf;
    	}
    	sort(arr,arr+num,cmp);
    	for(int i=0;i<num;i++){
    		if(arr[i].gp>=200&&arr[i].G>=60){
    			cout<<arr[i].name;
    			printf(" %d %d %d %d
    ",arr[i].gp,arr[i].gm,arr[i].gf,arr[i].G);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    遇见Javascript类型数组
    编译Android常用命令
    V4L2驱动视频开发要点
    Windows Phone开发(27):隔离存储A
    Ubuntu10.04下Android开发环境搭建
    V4L2开发要点
    使用 php Header 报错的一个原因
    Windows Phone开发(28):隔离存储B
    用HTML5 Audio API开发游戏音乐
    php备份数据库类分享
  • 原文地址:https://www.cnblogs.com/hebust/p/9491351.html
Copyright © 2011-2022 走看看