PAT 乙级 1014 福尔摩斯的约会

PAT 乙级 1014 福尔摩斯的约会_第1张图片

PAT 乙级 1014 福尔摩斯的约会_第2张图片

解题思路:这题可把我给弄惨了,研究了很长时间,原因一是第一次我用python写想用字典的get函数去处理字母和数字字符,利用默认值,可是万万没想到,字符串格式化对字符和数字的补0是不一样的,这个错误我找了好久其余的坑都一言我统一说一说

这题第一个要注意的点是范围,大写字母,寻找日期的范围只能是A~G 刚好七个,判断的时候就要注明

第二个点 必须是第一个已经找到,再去找第二个,第二个范围只能是0~9,A-N,判断的时候看好,并且一定是找到就跳出循环,不然后面可能还有满足的

第三点 就很简单找到英文字符 位置输出就行

c语音版本:

#include
#include
int main()
{
	char a[4][100];
	char day[7][10]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
	int i;
	for(i=0;i<4;i++)
	{
		scanf("%s",a[i]);
	}
	int s1,s2,num,flag=0;
	s1=strlen(a[0]);
	s2=strlen(a[1]);
	num=s1<s2?s1:s2;
	for(i=0;i<num;i++)
	{
		if(a[0][i]==a[1][i]&&flag==0&&a[0][i]-'A'>=0&&a[0][i]-'A'<7)
		{
		
		flag=1;
		printf("%s ",day[a[0][i]-'A']);
	    }
	    else if(flag==1&&a[0][i]==a[1][i])
	    {
	    	if(a[0][i]>='A'&&a[0][i]<='N')
	    	printf("%02d:",a[0][i]-'A'+10);
	    	else if(a[0][i]>='0'&&a[0][i]<='9')
	    	{
	    	printf("%02d:",a[0][i]-'0');
	    	break;
	        }
		}
	}
	s1=strlen(a[2]);
	s2=strlen(a[3]);
	num=s1<s2?s1:s2;
	for(i=0;i<num;i++)
	{
		if(a[2][i]==a[3][i]&&(a[2][i]>='A'&&a[2][i]<='Z'||a[2][i]>='a'&&a[2][i]<='z'))
		{
		printf("%02d\n",i);
		break;
	    }
		
		
	}
	return 0;
}

python 版本:

s1=input()
s2=input()
s3=input()
s4=input()
day={'A':'MON','B':'TUE','C':'WED','D':'THU','E':'FRI','F':'SAT','G':'SUN'}
hour={'A':10,'B':11,'C':12,'D':13,'E':14,'F':15,'G':16,'H':17,'I':18,'J':19,'K':20,'L':21,'M':22,'N':23}
first=-1
num1=min(len(s1),len(s2))
for i in range(num1):
    if s1[i]==s2[i] and s1[i]>='A' and s1[i]<='G':
            print(day[s1[i]],end=' ')
            first=i
            break
for i in range(first+1,num1):
    if s1[i]==s2[i] and (s1[i]>='0' and s1[i]<='9' or s1[i]>='A' and s1[i]<='N'):
        if(s1[i]>='0' and s1[i]<='9'):
            print('0'+s1[i],end=':')
        elif s1[i]>='A' and s1[i]<='N':
            print(hour[s1[i]],end=':')
        break
num1=min(len(s3),len(s4))
for i in range(num1):
    if s3[i]==s4[i] and (s3[i]>='a'and s3[i]<='z'or s3[i]>='A' and s3[i]<='Z'):
        print('{:02}'.format(i))
            
        
        
    

你可能感兴趣的:(pat考试,c语言,python)