这道题的题意真的描述的很不清楚,首先DAY只能是A~G,不能用A
~Z来判断,其次是HH的值,分为两种一种是A-N,另一种是0-9,而且要注意两点,一个是HH的判断紧接着DAY不能从头再来,二是找到HH的值后一定要break,否则就会像我一样,这道题大概做了1个多小时,提交了10遍左右,最后MM的值是在第二对字符串中获得的,非常要注意这道题里面的一对的意思是两个字符串的同一位置处相同,不是让你用两个for循环查找,真的太坑了!!!
using namespace std;
#include<bits/stdc++.h>
//注意题目表意不明,一对的意思是同一位置下,同时结束条件是小于两对中较小的那对
int main(){
char a[4][65];
int d=0,h=0,m=0;
int i,j;
for(i=0;i<4;i++) scanf("%s",a[i]);
int len1=strlen(a[0]),len2=strlen(a[1]);
bool flag=false;
for(i=0;i<len1 && i<len2;i++){
if(a[0][i] == a[1][i]){
if(!flag){
if(a[0][i]>='A' && a[0][i]<='G'){//只能是A~G,不能用A~Z
d=a[0][i]-'A';
flag=true;
}
}
else{
if(a[0][i]>='A' && a[0][i]<='N'){//只能是A~N,不能用A~Z
h=a[0][i]-'A'+10;
break;//important!
}
else if(a[0][i]>='0' &&a[0][i]<='9'){
h=a[0][i]-'0';
break;//important!
}
}
}
}
int len3=strlen(a[2]),len4=strlen(a[3]);
for(i=0;i<len3 && i<len4;i++){
if(a[2][i] == a[3][i]){
if((a[2][i]>='A' && a[2][i]<='Z') || (a[2][i]>='a' && a[2][i]<='z')){
m=i;
break;
}
}
}
char day[7][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
printf("%s %02d:%02d",day[d],h,m);
return 0;
}