当前位置: 代码迷 >> 综合 >> PAT 1014 福尔摩斯的约会 (20分)
  详细解决方案

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

热度:59   发布时间:2023-12-12 11:02:13.0

1014题目链接

总结:在写逻辑的时候,思路要清晰,最好画一个流程图,判断条件流程

#include <iostream>
#include <stdio.h>
using namespace std;bool IsABC(char x)
{
    if((('A'<=x) && (x<='Z')) || (('a'<=x)&&(x<='z'))){
    return true;}return false;
}
bool isdi(char c)
{
    if((c-'0')<10&&(c-'0'>=0)){
    return true;}return false;
}int main()
{
    int i = 0;int j;string str[4];string day[7] = {
    "MON","TUE","WED","THU","FRI","SAT","SUN"};//saturdaywhile(cin >> str[i]){
    i++;if(i == 4){
    break;}}for(j=0;j<str[0].length()&&j<str[1].length();j++)//第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;{
    if( (str[0][j] == str[1][j]) && str[0][j]>='A' &&str[0][j]<='G' ) //因为A~G表示周一到周日{
    cout<<day[str[0][j]-65];break;}//j =3}for(int k=j+1;(k<str[0].length())&&(k<str[1].length());k++)//第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头//(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A 到 N 表示);{
    if((str[0][k] == str[1][k])){
    if(isdi(str[0][k])){
    printf(" %02d:",str[0][k]-'0');break;}else if(str[0][k]<='N'&&str[0][k]>='A')//10 11 12 13 14 15 16 17 18 19 20 21 22 23{
    printf(" %02d:",str[0][k]-55);break;}}}for( i=0;i<str[2].length()&&i<str[3].length();i++){
    if(str[2][i] == str[3][i] && IsABC(str[2][i])){
    printf("%02d",i);break;}}return 0;
}