PAT-字符串处理-B 1014 福尔摩斯的约会 (20分)
题目:
思路:
- 扫描前两个字符串,寻找第一队相同位置的A~G的大写字母,之后求出其与字符‘A’的距离
- 在步骤1的基础上,继续往后寻找,直到碰到第一对相同位置的0~9或A~N的字符,将其分别转换为0~9或10~13
- 扫描后两个字符串,寻找第一队相同位置的A~Z或a~z的英文字母,获取位置
注意点:
注意题目日期、时、分钟的字母范围
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int maxn = 80; 5 6 char days[7][5] = { "MON","TUE","WED","THU","FRI","SAT","SUN" }; 7 8 int main() 9 { 10 char line1[maxn], line2[maxn]; 11 12 //获取日期 13 scanf("%s%s", line1, line2); 14 int i; 15 for (i = 0;i < 60;i++) 16 { 17 //注意题目条件范围 18 if(line1[i] == line2[i] && line1[i]>='A' && line1[i]<='G') 19 { 20 printf("%s ", days[line1[i] - 'A']); 21 break; 22 } 23 } 24 25 //获取时 26 for (i++;i < 60;i++) 27 { 28 if (line1[i] == line2[i]) 29 { 30 //注意题目条件范围 31 if (line1[i] >= '0' && line1[i] <= '9') 32 { 33 printf("%02d:", line1[i] - '0'); 34 break; 35 } 36 if (line1[i] >= 'A' && line1[i] <= 'N') 37 { 38 printf("%02d:", line1[i] - 'A' + 10); 39 break; 40 } 41 } 42 } 43 44 //获取分钟 45 scanf("%s%s", line1, line2); 46 for (int i = 0;i < 60;i++) 47 { 48 //注意题目条件范围 49 if (isalpha(line1[i]) && line1[i] == line2[i]) 50 { 51 printf("%02d", i); 52 break; 53 } 54 } 55 return 0; 56 }
作者:方知有
Motto: 热爱可抵岁月漫长
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
所有评论和私信都会在第一时间处理,如有问题或建议,请多多赐教!
支持博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!