PAT (Basic Level) Practise:1014. 福尔摩斯的约会

【题目链接】

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

输入格式:

输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。

输出格式:

在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。

输入样例:

3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

输出样例:

THU 14:04

提交代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main(void)
 5 {
 6     char *week_table[] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
 7     char str1[61], str2[61], str3[61], str4[61];
 8     int i;
 9     int week, hour, second;
10     int len1, len2, len3, len4;
11 
12     scanf("%s%s%s%s", str1, str2, str3, str4);
13 
14     len1 = strlen(str1);
15     len2 = strlen(str2);
16     len3 = strlen(str3);
17     len4 = strlen(str4);
18 
19     week = hour = second = 0;
20     // 注意题目的文字游戏
21     // 第1对相同的大写英文字母,该字母在字母表中的位置表示week
22     for(i = 0; i < len1 && i < len2; i++)
23     {
24         if(str1[i] == str2[i] && (str1[i] >= 'A' && str1[i] <= 'G'))
25         {
26             week = str1[i] - 'A'; 
27             break;
28         }
29     }
30     // 第2对相同的字符,(0~9,A~N)表示hour
31     for(i++; i < len1 && i < len2; i++)
32     {
33         if(str1[i] == str2[i] && ((str1[i] >= 'A' && str1[i] <= 'N') || (str1[i] >= '0' && str1[i] <= '9')))
34         {
35             if(str1[i] >= 'A' && str1[i] <= 'N')
36                 hour = str1[i] - 'A' + 10;
37             else
38                 hour = str1[i] - '0';
39 
40             break;
41         }
42     }
43 
44     // 第1对相同的英文字母,该字母在字符串中的位置表示second
45     for(i = 0; i < len3 && i < len4; i++)
46     {
47         if((str3[i] == str4[i]) && ((str3[i] >= 'a' && str3[i] <= 'z') || (str3[i] >= 'A' && str3[i] <= 'Z')))
48         {
49             second = i;
50             break;
51         }
52     }
53 
54     printf("%s %02d:%02d", week_table[week], hour, second);
55 
56     return 0;
57 }

这个题目就是一个坑爹的文字游戏哎,囧。。。

原文地址:https://www.cnblogs.com/utank/p/4760436.html