PAT-字符串处理-B 1014 福尔摩斯的约会 (20分)

题目:

思路:

  1. 扫描前两个字符串,寻找第一队相同位置的A~G的大写字母,之后求出其与字符‘A’的距离
  2. 在步骤1的基础上,继续往后寻找,直到碰到第一对相同位置的0~9或A~N的字符,将其分别转换为0~9或10~13
  3. 扫描后两个字符串,寻找第一队相同位置的A~Z或a~z的英文字母,获取位置

注意点:

  注意题目日期、时、分钟的字母范围

代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 const int maxn = 80;
 5 
 6 char days[7][5] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
 7 
 8 int main()
 9 {
10     char line1[maxn], line2[maxn];
11 
12     //获取日期
13     scanf("%s%s", line1, line2);
14     int i;
15     for (i = 0;i < 60;i++)
16     {
17         //注意题目条件范围
18         if(line1[i] == line2[i] && line1[i]>='A' && line1[i]<='G')
19         {
20             printf("%s ", days[line1[i] - 'A']);
21             break;
22         }
23     }
24 
25     //获取时
26     for (i++;i < 60;i++)
27     {
28         if (line1[i] == line2[i])
29         {
30             //注意题目条件范围
31             if (line1[i] >= '0' && line1[i] <= '9')
32             {
33                 printf("%02d:", line1[i] - '0');
34                 break;
35             }
36             if (line1[i] >= 'A' && line1[i] <= 'N')
37             {
38                 printf("%02d:", line1[i] - 'A' + 10);
39                 break;
40             }
41         }
42     }
43 
44     //获取分钟
45     scanf("%s%s", line1, line2);
46     for (int i = 0;i < 60;i++)
47     {
48         //注意题目条件范围
49         if (isalpha(line1[i]) && line1[i] == line2[i])
50         {
51             printf("%02d", i);
52             break;
53         }
54     }
55     return 0;
56 }
View Code

 

posted @ 2020-03-12 21:09  方知有  阅读(142)  评论(0编辑  收藏  举报