到现在题目也没搞太明白,反正通过了。下面我的理解。
注意:
判断小时数:题目中说是第2对相同字符,应该是星期数后面的相同的字符,并且要满足:
- 是数字或则A~N之间。
如果是从头开始的第二个满足条件的字符,比如:
- 3485djDkxh4hhGE
- 2985akDfkkkkggEdsb
这两个字符串,第2个满足条件的字符是5,但小时数应该是字符E(星期数D的后一个满足条件的字符)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
char s[4] = {'\0'};
char *cmp(char s1[], char s2[])
{
int len, i, flag = 0;
len = strlen(s1) > strlen(s2) ? strlen(s2) : strlen(s1);
for(i = 0; i<len; i++)
{
if(s1[i] == s2[i])
{
if(s1[i] >= 'A' && s1[i] <= 'G')
{
if(s[0] == '\0')
{
s[0] = s1[i];
flag = 1;
continue;
}
}
if(isdigit(s1[i]) && flag)
{
if(s[1] == '\0')
{
s[1] = s1[i];
}
}
else if(s1[i] >= 'A' && s1[i] <= 'N' && flag)
{
if(s[1] == '\0')
{
s[1] = s1[i];
}
}
}
}
return s;
}
char cmp2(char s1[], char s2[])
{
int len, i, flag = 0;
char c;
len = strlen(s1) > strlen(s2) ? strlen(s2) : strlen(s1);
for(i = 0; i<len; i++)
{
if(s1[i] == s2[i])
{
if(islower(s1[i]))
{
c = i + '0';
break;
}
else if(isupper(s1[i]))
{
c = i + '0';
break;
}
}
}
return c;
}
int main()
{
char s1[61], s2[61], s3[61], s4[61];
char day[][4] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
char *p, c;
int i, j, k;
scanf("%s", s1);
scanf("%s", s2);
scanf("%s", s3);
scanf("%s", s4);
p = cmp(s1, s2);
i = ((int)(p[0] - 'A') + 1) % 7;
if(isdigit(p[1]))
{
j = (int)(p[1] - '0');
}
else
{
j = (int)(p[1] - 'A') + 10;
}
c = cmp2(s3, s4);
k = (int)(c - '0');
printf("%s %02d:%02d\n", day[i], j, k);
return 0;
}