解题思路:这题最关键的是要注意当输入的数据,00123,0000等这些情况,
刚开始用long long, WA了好几发,非常迷茫,后来突然想起特殊数据,
用字符串,则轻松解决问题。顺便多说两句:当你发现以你的思路写的
题不可能出错时,有两种最大的可能,1.题目理解有误。 2.特殊数据。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn = 105; 6 7 struct node{ 8 char num[20]; 9 char str[25]; 10 }p[maxn]; 11 12 int main() 13 { 14 int n, m; 15 char s[20]; 16 while(~scanf("%d %d", &n, &m)) 17 { 18 19 for(int i = 0; i < n; i++) 20 { 21 scanf("%s", p[i].num); //也可以用23,24行取代这两行 22 scanf("%s", p[i].str); 23 //scanf("%s", &p[i].num); 24 //scanf("%s", &p[i].str); 25 } 26 while(m--) 27 { 28 scanf("%s", s); 29 int flag = 0; 30 for(int i = 0; i < n; i++) 31 { 32 if(strcmp(p[i].num, s) == 0) //比较字符串是否相等 33 { 34 printf("%s ", p[i].str); 35 flag = 1; 36 break; 37 } 38 } 39 if(!flag) printf("%s ", s);//如果不相等,则输出输入的字符串 40 } 41 } 42 return 0; 43 }