1014. 福尔摩斯的约会

 题目截图:

 

思路:

  字符串处理。

 

代码:

 1 /*
 2     1014. 福尔摩斯的约会
 3 */
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <math.h>
 8 #include <stdlib.h>
 9 #include <time.h>
10 
11 #define maxn 61
12 char s1[maxn], s2[maxn];             // 存储两个字符串
13 // 星期缩写 
14 char day[][8] = {"", "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
15 
16 int main() {
17     scanf("%s %s", s1, s2);
18     int len1=strlen(s1), len2=strlen(s2);
19     int minL = (len1<len2) ? len1 : len2;
20     int d=0, h=0, m=0;                // d表示星期,h表示小时,m表示分 
21     int i;
22     for(i=0; i<minL; ++i) {
23         if(s1[i]==s2[i] && s1[i]>='A' && s1[i]<='G') {
24             d = s1[i]-'A'+1;        // 第一对相同的大写字母 
25             break;
26         }
27     }
28     i++;                            // 注意要后移一位
29     for(; i<minL; ++i) {            // 查找第二对相同的字符 
30         if(s1[i]==s2[i]) {
31             if(s1[i]>='0' && s1[i]<='9') {            // 数字表示0-9 
32                 h = s1[i]-'0';
33                 break;
34             } else if(s1[i]>='A' && s1[i]<='N') {    // 大写字母表示10-23 
35                 h = s1[i]-'A'+10;
36                 break;
37             }
38         }
39     }
40     scanf("%s %s", s1, s2);
41     len1=strlen(s1); len2=strlen(s2);
42     minL = (len1<len2) ? len1 : len2;
43     for(i=0; i<minL; ++i) {            // 查找第一对相同的字母 
44         if(s1[i]==s2[i] && ((s1[i]>='a' && s1[i]<='z') || (s1[i]>='A' && s1[i]<='Z'))) {
45             m = i;
46             break;
47         }
48     }
49     printf("%s %02d:%02d", day[d], h, m);    // 输出,小时和分要输出两位 
50 
51     return 0;
52 }

 

posted @ 2018-02-26 11:30  Just_for_Myself  阅读(256)  评论(0编辑  收藏  举报