题解 | #查找学生信息#

查找学生信息

https://www.nowcoder.com/practice/fe8bff0750c8448081759f3ee0d86bb4

用到了map映射,map中关键字为int学号,映射值为string其他信息;

本题示例的输出格式与测试的输出格式不同,有点坑,输出时%d前不需要加0才能通过

#include <map>
#include <cstdio>
#include <string>
#include <iostream>

using namespace std;

int main(){
    int n,m;
    map<int,string> mymap;//定义要使用的map,学号为关键字,其他信息为映射值
    while(scanf("%d",&n)!=EOF){
        for(int i = 0;i<n;i++){
            //每行先读入学号,遇空格停止,cin忽略前面的空格
            int stunum;
            //cin不对后面的分隔符做处理,因此我猜后面用getline时会自动忽略前面的分隔符
            cin>>stunum;    
            //scanf("%d",&stunum);
            string str;
            getline(cin,str);
            mymap[stunum] = str;    //用“下标”的方式给map添加新元素
        }

        scanf("%d",&m);
        for(int j = 0;j < m;j++){
            int searchnum;
            scanf("%d",&searchnum);
            if(mymap.find(searchnum)!=mymap.end()){//注意在map中查找的写法
                if(searchnum<10){
                    //看示例后原本以为学号<10时要前面加0,但是测试用例中不需要加0,坑人
                    printf("%d%s\n",searchnum,mymap[searchnum].c_str());
                }
                else{
                    printf("%d%s\n",searchnum,mymap[searchnum].c_str());
                }
                
            }
            else{
                printf("No Answer!\n");
            }
        }
    }
}
全部评论

相关推荐

09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务