1014. 福尔摩斯的约会

Posted Just_for_Myself

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于1014. 福尔摩斯的约会的主要内容,如果未能解决你的问题,请参考以下文章

1014 福尔摩斯的约会

1014 福尔摩斯的约会

1014. 福尔摩斯的约会 (20)

1014 福尔摩斯的约会 (20 分)

PAT1014. 福尔摩斯的约会 (20)

PAT乙级 1014 福尔摩斯的约会 (20 分)