查看原题目请点我这里
解题思路
需要注意的地方是第二个相同的字符,指的是字母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;
}