题解 | #查找学生信息#map方法
查找学生信息
https://www.nowcoder.com/practice/fe8bff0750c8448081759f3ee0d86bb4
#include <iostream> #include <string> #include <cstdio> #include <algorithm> #include <map> using namespace std; struct Student { //学生的结构体 string name; string sex; int age; }; int main() { int N;//学生的个数 scanf("%d", &N); map<string, Student> myMap; //输入学生信息 for (int i = 0; i < N; i++) { char id[30]; char name[30]; char sex[30]; //这里如果只有三个位置就会乱码,加大一点就不会了,这也太玄学 int age; scanf("%s %s %s %d", id, name, sex, &age); string idStr = id; Student stu; stu.name = name; stu.sex = sex; stu.age = age; myMap[idStr] = stu; } int M; scanf("%d", &M); char c[10000]; for (int i = 0; i < M; i++) { scanf("%s", c); //c为学号 //printf("%s", c); string str = c; if(myMap.find(str) != myMap.end()){ //找到了 printf("%s %s %s %d\n", c, myMap[str].name.c_str(), myMap[str].sex.c_str(), myMap[str].age); }else{ printf("No Answer!\n"); } } } // 64 位输出请用 printf("%lld")