swun 1397 来电显示

解题思路:这题最关键的是要注意当输入的数据,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 }
View Code
原文地址:https://www.cnblogs.com/loveprincess/p/4802955.html