【PAT】B1080 MOOC期终成绩(25 分)
2024-09-20 07:18:17
还是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\n",arr[i].gp,arr[i].gm,arr[i].gf,arr[i].G);
}
}
return 0;
}
最新文章
- 深度浅出immutable.js
- LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧
- Java,Calendar 获得明天凌晨的时间time
- How to disable and clear query ranges in sysquery form
- Metro中控件WebView访问外部的网页显示一片空白
- **IOS:xib文件解析(xib和storyboard的比较,一个轻量级一个重量级)
- 利用ddmlib 实现 PC端与android手机端adb forword socket通信(转)
- linux同步
- wx.Frame
- .NET面试题目一
- javascript执行原理
- 小白的Python之路 day5 time,datatime模块详解
- 学习MeteoInfo二次开发教程(十)
- Faster-RCNN tensorflow 程序细节
- LeetCode--No.014 Longest Common Prefix
- 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
- 高斯日记|2013年蓝桥杯B组题解析第一题-fishers
- UVa 208 消防车(dfs+剪枝)
- ip netns
- MVC: Connection String