您的位置:首页 > 其它

PAT1014 福尔摩斯的约会

2017-11-24 11:54 246 查看
#include <iostream>
#include<iomanip>
#include<cctype>

using namespace std;

/*
第一对字符必须是A-G的大写字母,分别表示星期1到星期日
第二对字符是0-9或者A-N的字符,分别表示0-9点和10到23点
第三对字符必须是个字母,大写的或者小写的都可以
*/
int main() {
char str_1[70] = {'0'};
char str_2[70] = {'0'};
char str_3[70] = {'0'};
char str_4[70] = {'0'};

cin >> str_1 >> str_2 >> str_3 >> str_4;

//前两句检查结束的标记
bool flag = false;
//先找出第一个A-G的大写字母
for (int i = 0; str_1[i]!='\0'&&str_2[i]!='\0'; i++) {
if (str_1[i]==str_2[i]&&str_1[i]>='A'&&str_1[i]<='G') {
switch (str_1[i]) {
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;
}
//再找第二个0-9或者是A-N的字符
for (int j = i+1; str_1[j]!='\0'&&str_2[j]!='\0'; j++) {
if (str_1[j]==str_2[j]&&((str_1[j]>='A'&&str_1[j]<='N')||(str_1[j]>='0'&&str_1[j]<='9'))) {
int temp = 0;
if (isalpha(str_1[j])) {
temp = str_1[j]-'A'+10;
} else {
temp = str_1[j]-'0';
}
cout << temp/10 << temp%10;
flag = true;
break;
}
}
//如果已经检测到了第二个字符,就退出前两个字符串的判断
if (flag)
break;
}
}
//找出第三个字母所在的位置
for (int i = 0; str_3[i]!='\0'&&str_4[i]!='\0'; i++) {
if (isalpha(str_3[i])&&str_3[i]==str_4[i]) {
cout << ":" << i/10 << i%10 << endl;
break;
}
}
return 0;
}


题目很坑爹,细节很多,一定要注意好这三对字符的类型以及范围
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: