说下几个坑:
星期几:范围是A-G,且得是第一个匹配的字母。
小时:范围是0-9 A-N,且得是第二个匹配字母,并且要补足两位数。
分钟;按位置判断,且必须是字母,补足两位数。
用cnt=0表示第一个匹配,得到星期后记得cnt++,一定要后移一位,j++,不然小时会记录相同的字母。得到小时后记得跳出循环,或者j++,不然小时会记录最后一个匹配的字母。
#includeusing namespace std; int main(){ string S1,S2,S3,S4; char day,hour; int min; string week[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"}; //输入 cin>>S1>>S2>>S3>>S4; int len1=S1.length(),cnt=0; //比较 for(int j=0;j ='A')){ day=S1[j];//day记录星期几,ABCDEFG分别对应周一 到 周日 cnt=1; j++; } if((S1[j]==S2[j])&&cnt==1&&((S1[j]>='0'&&S1[j]<='9')||(S1[j]>='A'&&S1[j]<='N'))){ hour=S1[j];//hour记录小时0-9,A-N分别对应 0-23时 cnt++; } } int len2=S3.length(); int cnt1=0;//用于判读是否第一个匹配字符 for(int j=0;j ='0')printf("0%d:",hour-'0');//只有一位,补充0 else{ int num =hour-'A'+10;//A-N转换为10-23 printf("%d:",num); } //用两位表示分钟 printf("%02d",min); return 0; }



