PAT 1014 乙等 (福尔摩斯的约会) 纯C++版本

来源:互联网 发布:天刀捏脸数据保存在哪 编辑:程序博客网 时间:2024/04/30 04:08

审题:(有坑)
1. 判断是星期几,是根据第一对相同的大写字母(A–G之间),并不是第一对相同的大写字母(可能超出范围).
2. 判断小时是判断字符而不是字母,包括0–9,A–N.

以下是我完成的代码:

#include <iostream>#include <iomanip>#include <string>using namespace std;int main(){    string str1, str2, str3, str4;    cin >> str1 >> str2 >> str3 >> str4;    int l = 0;    //循环使用较短的字符串长度即可,本代码有一定的冗余    if (str1.length() > str2.length()){        l = str2.length();    }    else        l = str1.length();    char ss;     int pos; //记录第一次查找到星期的位置,+1为查找hour的起始位置    for (int i = 0; i < l; i++){        if (str1[i] == str2[i] && isupper(str1[i]) && str1[i] <='G'){            ss = str1[i];            pos = i;            break;        }    }        switch (ss){        case 'A': cout << "MON ";            break;        case 'B': cout << "TUE ";            break;        case 'C': cout << "WED ";            break;        case 'D': cout << "THU ";            break;        case 'E': cout << "FRI ";            break;        case 'F': cout << "SAT ";            break;        case 'G':  cout << "SUN ";            break;    }    char s1;    for (int i = pos+1; i < l; i++){        if (str1[i] == str2[i] && ((isupper(str1[i]) && str1[i] <= 'N') || (str1[i] >= '0'&& str1[i] <= '9'))){            s1 = str1[i];            break;        }    }    if (isupper(s1)){        cout << ((s1 - 'A') + 10) << ":";    }    else        cout << "0" << s1 - '0' << ":";    int m = 0;    if (str3.length() > str4.length()){        m = str4.length();    }    else        m = str3.length();    for (int i = 0; i < m; i++){        if (str3[i] == str4[i] && (islower(str3[i])|| isupper(str3[i]))){            if (i < 10)                cout << "0" << i << endl;            else                cout << i << endl;            break;        }    }    return 0;}
0 0
原创粉丝点击