题目
思路
本题的难点又在于理解题意,观察输入输出样例和自己实测,题目中的“第一对相同的大写字母”是要求这两个字母要“值相同且在各自串中的位置相同”,这无疑大大降低了难度,如果没有位置相同的条件,确定第一对相同的大写字母要困难不少;后面两个数据类似
另外,由于一周只有7天,则标识星期的数据必须限制在A~G,类似的标识小时的数据必须在0到9以及A到N之间,实测如果没有这两个条件,只限制在A到Z之间各会有一个用例无法通过
理清楚题意后就比较简单里,设置day,hour,min三个变量各自统计出结果,再按照规定打印即可
#include<stdio.h>
int main(void)
{
char day, hour;
int min, i, j;
char ch[4][60];
const char* week[8] = { " ","MON","TUE","WED","THU","FRI","SAT","SUN" };
for (i = 0; i < 4; i++)
scanf("%s", ch[i]);
for (i = 0, j = 0; ch[0][i] < 'A' || ch[0][i]>'G' || ch[0][i] != ch[1][j]; i++, j++);
day = ch[0][i];
for (i = i + 1, j = j + 1; (ch[0][i] < 'A' || ch[0][i]>'N') && (ch[0][i] < '0' || ch[0][i]>'9') || ch[0][i] != ch[1][j]; i++, j++);
hour = ch[0][i];
for (i = 0, j = 0; ch[2][i] < 'A' || ch[2][i]>'z' || ch[2][i] != ch[3][j]; i++, j++);
min = i;
printf("%s ", week[day - 'A' + 1]);
if (hour <= '9')
printf("0%d:", hour - '0');
else
printf("%d:", hour - 'A' + 10);
if (min < 10)
printf("0%d", min);
else
printf("%d", min);
return 0;
}