目录

  • 一、题目
  • 二、我的AC代码

一、题目

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

  大侦探福尔摩斯接到一张奇怪的字条:

我们约会吧!
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm

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

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

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

输入样例:

3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm

输出样例:

THU 14:04
代码长度限制            16 KB
时间限制                200 ms
内存限制                 64 MB

二、我的AC代码

#include <stdio.h>
#define MaxStringLength 60                                                                          //每行输入的字符串长度不超过60。const char Day[7][4]={"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};                            //星期几的英文简写。注意:字符串末尾有个结束符'\0',数组容量要加1。
const char Hour[24]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N'};  //字符表示的小时数,是其对应的数组下标。int main(void)
{/* 读取4行字符串 */char Line[4][MaxStringLength+1];                                                                 //二维数组Line用于存放输入的4行字符串。二维数组Line的行数为4,列数为61。for(int i=0; i<4; i++){scanf("%s", &Line[i]);                                                                     //逐行读入字符串。}int flag=0;                                                                                     //flag作为已经读取到有效数据个数的标志。/* 前两行字符串比较 */for(int i=0; i<MaxStringLength; i++){/* 如果上下字符相同 */if(Line[0][i] == Line[1][i]){/* 判断第一个有效字符 */if(flag==0){if(Line[0][i]>='A' && Line[1][i]<='G'){                                           //一周7天,所以对应的大写字母应该是'A'到'G'。printf("%s ", Day[Line[0][i] - 'A']);                                             //根据当前的大写字母与大写字母'A'的ASCII码差值,输出星期数组中对应下标的星期几的英文简写字符串。flag=1;                                                                          //表示已经找到一个有效数据。continue;                                                                        //注意:此处让我一直全错,修正后就全对了。当找到是星期几的时候,已经将flag置为1了,一定要跳转到下一个循环,即i++,否则会直接进入flag=1条件下的判断。}}/* 判断第二个有效字符 */if(flag==1){if((Line[0][i]>='0' && Line[0][i]<='9') || (Line[0][i]>='A' && Line[0][i]<='N')){     //由题意,数字0~9和大写字母A~N分别代表小时数0~23。/* 逐个匹配字符,判断小时数是多少 */for(int j=0; j<24; j++){if(Hour[j] == Line[1][i]){printf("%02d:",j);                                                    //输出小时数,即输出小时数组对应的下标。格式化:2d表示输出为2位整数,前面的0表示整数不足2位时,在前面补零。flag=2;                                                               //表示已经找到两个有效数据。break;                                                               //前两行中的两个有效数据都已经找到,不用继续在前两行中查找了,跳出循环。}}}}}}/* 后两行字符串比较,也是判断第三个有效字符 */for(int i=0; i<MaxStringLength; i++){/* 如果上下字符相同 */if(Line[2][i] == Line[3][i]){if((Line[2][i]>='A' && Line[2][i]<='Z') || (Line[2][i]>='a' && Line[2][i]<='z')){         //判断是否是字母。printf("%02d", i);                                                                  //输出分钟数,即输出字符在字符串中的下标。格式化:2d表示输出为2位整数,前面的0表示整数不足2位时,在前面补零。flag=3;                                                                              //表示已经找到三个有效数据。可以省略,为了格式相同,我写上了。break;                                                                            //后两行中的有效数据已经找到,不用继续查找了,跳出循环。}}}return 0;
}

【PAT乙级】1014 福尔摩斯的约会相关推荐

  1. pat 乙级 1014 福尔摩斯的约会 (C++)

    题目 大侦探福尔摩斯接到一张奇怪的字条: 我们约会吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字 ...

  2. PAT乙级(1014 福尔摩斯的约会)

    大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ...

  3. PAT 乙级1014 福尔摩斯的约会(C语言)

    大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ...

  4. PAT 乙级 1014. 福尔摩斯的约会 (20) Java版

    大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm".大侦 ...

  5. C++学习之路 | PTA乙级—— 1014 福尔摩斯的约会 (20分)(精简)

    1014 福尔摩斯的约会 (20分) 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hys ...

  6. pat乙级 1014 java_pat乙级1014 福尔摩斯的约会

    大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm".大侦 ...

  7. PAT乙类1014 福尔摩斯的约会 (20 分)

    一.题目 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了 ...

  8. 浙江大学PAT (Basic Level) Practice (中文)1014福尔摩斯的约会JAVA实现代码及分析

    1014 福尔摩斯的约会 这道题需要注意的地方有以下几点: ①决定星期几的是前两个字符串的第一个相同的大写字母,注意是第一个大写的字母,小写不算. ②决定分钟数的是后两对字符串的第一个相同的字母所出现 ...

  9. 1014 福尔摩斯的约会 (20 分)|一道我认为烂透了的题

    1014 福尔摩斯的约会 (20 分) 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hy ...

最新文章

  1. 2010提高组-乌龟棋 [记忆优化搜索]
  2. C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON
  3. 5G 行业专网 — 公有云上的 5G 专网
  4. HDU 1492 The number of divisors(约数) about Humble Numbers(数论,简单约数)
  5. php里的utf-8编码,php – 修复损坏的UTF-8编码
  6. 语言nomogram校准曲线图_预测模型的概率校准
  7. java下载txt文本文件
  8. ASP.NET2.0 HiddenField控件
  9. 玩转Excel系列-SUMIF函数实例教程
  10. 用GDB调试PHP扩展
  11. 使用 IntraWeb (29) - 基本控件之 TIWAutherList、TIWAutherINI、TIWAutherEvent
  12. 记一次nodemanager无法启动的情况
  13. h3c交换机堆叠(IRF)配置三步完成
  14. String类的trim() 方法
  15. div是什么意思?HTML和CSS中div标签怎么用
  16. 数据库分库分表,分片配置轻松入门!
  17. get(obj, “a.b[0].c“, 0)
  18. 西瓜微数解析:微博热搜分析,为何金琦队长霸屏热搜!!
  19. 【分析方法】用户生命周期模型
  20. 为什么Rust这么受欢迎?

热门文章

  1. 计算机二级WPS 选择题(模拟和解析六)
  2. c语言点餐程序,C语言实现点餐系统
  3. MySQL数据库学习——啥是SQL语句?
  4. python怎么找论文资料_科研人 | 如何高效查找文献、紧跟研究领域热点和前沿?...
  5. python手机运行器_MobileNet教程:用TensorFlow搭建在手机上运行的图像分类器
  6. BJTU 1688 Quartz的宝藏
  7. win10 离线安装.net framework 3.5并且无法安装错误代码0x800F081F
  8. QT 类静态函数作为回调函数
  9. 全志F133A/B开发板
  10. mysql 创建库 用户名_MYSQL-给带特殊符号的数据库创建用户名