PAT - A1061 Dating (20分) https://pintia.cn/problem-sets/994805342720868352/problems/994805411985604608
PAT - B1014 福尔摩斯的约会 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560
注意点:
- 字符有效范围 分别为
A ~ G
、0 ~ 9 和 A ~ N
、A ~ Z 和 a ~ z
; - 小时和分钟输出为两位(不够要在前面补0);
通过代码(C/C++):
#include<stdio.h>
int main(){
char str[4][61];
for(int i=0;i<4;i++){
scanf("%s", str[i]);
}
int i=0;
const char day[7][4]={"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
while(str[0][i]!='\0' && str[1][i]!='\0'){ // 星期
if(str[0][i]==str[1][i] && str[0][i]>='A' && str[0][i]<='G'){
printf("%s ",day[str[0][i]-'A']);
i++; // 继续向后 找小时相关的字符
break;
}
i++;
}
while(str[0][i]!='\0' && str[1][i]!='\0'){ // 小时
if(str[0][i]==str[1][i] && ((str[0][i]>='A' && str[0][i]<='N') || (str[0][i]>='0' && str[0][i]<='9'))){
printf("%02d:", (str[0][i]>='A' && str[1][i]<='N') ? (str[0][i]-'A'+10) : (str[0][i]-'0'));
break;
}
i++;
}
i=0;
while(str[2][i]!='\0' && str[3][i]!='\0'){ // 分钟
if(str[2][i]==str[3][i] && ((str[2][i]>='A' && str[2][i]<='Z') || (str[2][i]>='a' && str[2][i]<='z'))){
printf("%02d", i);
break;
}
i++;
}
return 0;
}