2017年蓝桥杯模拟赛-8成绩查询
2017-04-08 19:23
417 查看
数学老师小y 想写一个成绩查询系统,包含如下指令:
注意有些同学可能会为了刷分多次选课,查询的时候给出最大成绩即可。学生的名字是由小写字母组成。成绩是一个 0…1000 \ldots 1000…100
的整数。
老师找到你,想你帮他完成这个系统。
个字符。
模拟赛之后的修改:
思路:map
数学老师小y 想写一个成绩查询系统,包含如下指令:
insert [name] [score],向系统中插入一条信息,表示名字为
name的学生的数学成绩为
score。
find [name],表示查找名字为
name的学生的数学成绩。
注意有些同学可能会为了刷分多次选课,查询的时候给出最大成绩即可。学生的名字是由小写字母组成。成绩是一个 0…1000 \ldots 1000…100
的整数。
老师找到你,想你帮他完成这个系统。
输入格式
输入若干行,每行都是insert [name] [score]或者
find [name]的形式,或一行
end表示输入结束。输入行数不大于100010001000,每个学生名字长度不大于202020
个字符。
输出格式
对于每个查询,输出查询的学生的最高成绩,如果系统中不存在该学生,输出 −1-1−1。样例输入
insert zhangsan 90 insert lisi 78 insert xiaoming 86 find xiaoming find jack end
样例输出
86 -1
#include <iostream> #include <string> using namespace std; struct Student { string name; int score; }; int main() { int i=0; Student stu[100]; string opr; string nam; int sco; while(cin>>opr) { if(opr=="end") { break; } else if(opr=="insert") { cin>>nam>>sco; stu[i].name=nam; stu[i].score=sco; i++; } else if(opr=="find") { cin>>nam; int j; bool f=false; for(j=0; j<=10; j++) { if(stu[j].name==nam)/*在这犯了低级错误!!!!!!!!!!!!!!!!!!!!!*/ { f=true; cout<<stu[j].score<<endl; } } if(f==false) { cout<<"-1"<<endl; } } //else // cout<<"error"<<endl; } return 0; }
模拟赛之后的修改:
#include <iostream> #include <string> using namespace std; struct Student { string name; int score; }; int main() { int i=0; Student stu[100]; string opr; string nam; int sco; while(cin>>opr) { if(opr=="end") { break; } else if(opr=="insert") { cin>>nam>>sco; stu[i].name=nam; stu[i].score=sco; i++; } else if(opr=="find") { cin>>nam; int j; bool f=false; for(j=0; j<=i; j++) { if(stu[j].name==nam)/*在这犯了低级错误!!!!!!!!!!!!!!!!!!!!!*/ { f=true; cout<<stu[j].score<<endl; } } if(f==false) { cout<<"-1"<<endl; } } //else // cout<<"error"<<endl; } return 0; }
思路:map
/* insert zhangsan 90 insert zhangsan 96 insert lisi 78 insert xiaoming 86 find xiaoming find zhangsan find jack end */ #include<iostream> #include<string> #include<algorithm> #include<map> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int main() { string s; map<string,int> a; while(cin>>s) { if(s[0]=='e') break; else if(s[0]=='i') { string name; int score; cin>>name>>score; map<string,int>::iterator temp; temp=a.find(name); if(temp==a.end()) a.insert(make_pair(name,score)); else a[name]=max(a[name],score); } else if(s[0]=='f') { string name; cin>>name; map<string,int>::iterator temp; temp=a.find(name); if(temp==a.end()) { cout<<"-1"<<endl; } else { cout<<temp->second<<endl; } } } return 0; }
相关文章推荐
- 蓝桥杯模拟赛第五场 - H. 成绩查询系统
- 2017年蓝桥杯模拟赛-1、年龄问题
- 2017年蓝桥杯模拟赛-2方程的解
- 2017年蓝桥杯模拟赛-3九宫格
- 2017年蓝桥杯模拟赛-4阶梯三角形
- 2017年蓝桥杯模拟赛-5补全数字
- 2017年蓝桥杯模拟赛-6补全等式
- 2017年蓝桥杯模拟赛-7礼物盒
- 2017年蓝桥杯模拟赛-9引爆炸弹
- 2017年 蓝桥杯模拟赛,猜算式(纯暴力)
- 2017年蓝桥杯模拟赛-10放置守卫
- 计蒜客蓝桥杯模拟赛5 成绩查询系统
- sql同时查询文理科平均成绩
- 蓝桥杯算法训练 区间K大数查询
- 蓝桥杯算法训练-区间k大数查询
- sql分组例子:查询某门课是最高成绩的记录
- 变色龙,轮QQ,99乘法表,打针,成绩查询
- 2017上半年信息系统监理师考试成绩查询
- 蓝桥杯模拟赛第五场 - A. 年龄问题
- 基于CORBA技术开发一个考试成绩查询系统