题目大意:
给四个字符串,其中前两个字符串中,第一对相同的大写字母(A-G)对应日期,第二对相同的字符(0-9)(A-N)对应小时,第三与第四个字符串中,第一对相同的字符(A-Z)(a-z)在字符串中所在的位置表示分钟。
根据四个字符串转换成DAY HH:MM形式
思路:
1.扫描字符串,找第一组相同的第一对大写字母,转换成星期。从当前位置继续寻找,找第二队相同字符,转换位分钟。
注意边界,星期为A-G,小时为0-9 A-N。
2.扫描第二组字符串,找出第一组相同字母(区分大小写)的位置,记作分钟。
3.输出时数字不足两位用0补齐。
AC代码:
//PAT_A 1061
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
char week[7][5] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
char str1[70], str2[70], str3[70], str4[70];
(void)scanf("%s", str1);
(void)scanf("%s", str2);
(void)scanf("%s", str3);
(void)scanf("%s", str4);
int len1 = strlen(str1);
int len2 = strlen(str2);
int len3 = strlen(str3);
int len4 = strlen(str4);
int i;
for (i = 0; i < len1 && i < len2; i++) {
if (str1[i] == str2[i] && str1[i] >= 'A' && str1[i] <= 'G') {
printf("%s ", week[str1[i] - 'A']);
break;
}
}
for (i++; i < len1 && i < len2; i++) {
if (str1[i] == str2[i]) {
if (str1[i] >= '0' && str1[i] <= '9') {
printf("%02d:", str1[i] - '0');
break;
}
else if (str1[i] >= 'A' && str1[i] <= 'N') {
printf("%02d:", str1[i] - 'A' + 10);
break;
}
}
}
for (i = 0; i < len3 && i < len4; i++) {
if (str3[i] == str4[i]) {
if (str3[i] == str4[i]) {
if (str3[i] >= 'A' && str3[i] <= 'Z' || str3[i] >= 'a' && str3[i] <= 'z') {
printf("%02d", i);
break;
}
}
}
}
return 0;
}