您的位置:首页 > 其它

2017年蓝桥杯模拟赛-8成绩查询

2017-04-08 19:23 417 查看

数学老师小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;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝桥杯