查看原题目请点我这里
解题思路
需要注意的地方是第二个相同的字符,指的是字母A-N和0-9的字符,另外输出的时候需要用0填充不足两位的情况。
字符串数组可以用来存星期的字符串。
心态崩了
这道题好坑呀,西湖的水,我的泪~
本来我在牛客网上顺利的通过了美滋滋,但是拿到PAT上一提交,发现总是有一个测试点过不去,哇,我的心态,炸穿了呀~
第一个比对的不是所有的大写字母,而是A-G之间的大写字母,我弄了超级久才发现呀!
代码如下

#include<cstdio>
#include<cstring>
using namespace std;
char str[][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int main(){
    char a[80],b[80],x[80],y[80];
    gets(a);gets(b);gets(x);gets(y);//scanf也可以的,这里没坑
    int len1=strlen(a);
    int len2=strlen(b);
    int week=0,time=0,minute=0;
    int j;
    for(j=0;j<len1&&j<len2;j++){
        if(a[j]==b[j]&&a[j]>='A'&&a[j]<='G'){
            week=a[j]-'A';
            break;
        }
    }
    j=j+1;
    while(j<len1&&j<len2){
        if(a[j]==b[j]&&a[j]>='A'&&a[j]<='N'){
            time=a[j]-'A'+10;
            break;
        }else if(a[j]==b[j]&&a[j]<='9'&&a[j]>='0'){
            time=a[j]-'0';
            break;
        }
        j++;
    }
    int len3=strlen(x);
    int len4=strlen(y);
    for(int i=0;i<len3&&i<len4;i++){
        if(x[i]==y[i]){
            if((x[i]>='a'&&x[i]<='z')||(x[i]>='A'&&x[i]<='Z')){
                minute=i;
                break;
            }   
        }
    }
    printf("%s %02d:%02d\n",str[week],time,minute);
    return 0;
}