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; }
题目很坑爹,细节很多,一定要注意好这三对字符的类型以及范围
相关文章推荐
- PAT1014. 福尔摩斯的约会
- 编程题目: PAT 1014. 福尔摩斯的约会 (20)
- PAT ——1014福尔摩斯的约会
- PAT乙级练习题B1014.福尔摩斯的约会
- PAT(B) - 1014. 福尔摩斯的约会 (20)
- 1014. 福尔摩斯的约会 (20)-PAT乙级
- PAT 1014. 福尔摩斯的约会 (20)
- 【PAT】B1014. 福尔摩斯的约会(题目理解,输出格式)
- PAT Basic Level 1014. 福尔摩斯的约会(20)
- 编程题目: PAT 1014. 福尔摩斯的约会 (20)
- PAT 乙级 1014. 福尔摩斯的约会
- PAT乙级1014. 福尔摩斯的约会(20)
- PAT 1014 乙等 (福尔摩斯的约会) 纯C++版本
- PAT 1014. 福尔摩斯的约会 (20)(C语言)
- pat 1014. 福尔摩斯的约会 (20)
- PAT-B 1014. 福尔摩斯的约会
- PAT 乙级练习题1014. 福尔摩斯的约会 (20)
- PAT乙级—1014. 福尔摩斯的约会 (20)-native
- PAT1014 福尔摩斯的约会
- PAT 1014 福尔摩斯的约会