• 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 }

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

  • 相关阅读:
    python
    VSCompile
    Oracle学习
    CMD
    JQuery 学习
    单词
    解决Manjaro+win双系统相差8小时
    编辑器使用
    软件安装
    磁盘分区与逻辑卷管理
  • 原文地址:https://www.cnblogs.com/utank/p/4760436.html
Copyright © 2020-2023  润新知