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\n", p[i].str);
35                     flag = 1;
36                     break;
37                 }
38             }
39             if(!flag) printf("%s\n", s);//如果不相等,则输出输入的字符串
40         }
41     }
42     return 0;
43 }
View Code

 

转载于:https://www.cnblogs.com/loveprincess/p/4802955.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值