讲解都在代码注释里
*这题要注意读懂题意,蛮绕的
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 65;
char a[maxn], b[maxn];
int main()
{
char week[8][5] = { "","MON","TUE","WED","THU","FRI","SAT","SUN" };
//小技巧,提前把所有的要输出的星期存入一个数组
//那么就不用写那么多的else if
scanf("%s %s", a, b);
int n = strlen(a), m = strlen(b);
int flag = 0;
int one, two, three;
//用one记录星期,two记录小时,three记录分钟
for (int i = 0;i < n && i < m;i++)
{
//找 '第一个' '相同的' '满足要求的大写字母'
if (flag == 0 && a[i] == b[i] && ('A' <= a[i] && a[i] <= 'G'))
{
flag = 1;
one = a[i] - 'A' + 1;
}
//找 '第二个' '相同的' '满足要求的大写字母或数字'
else if (flag == 1 && a[i] == b[i] && (('0' <= a[i] && a[i] <= '9') || ('A' <= a[i] && a[i] <= 'N')))
{
if ('0' <= a[i] && a[i] <= '9')
two = a[i] - '0';
else
two = a[i] - 'A' + 10;
break;//找到第二个字母就可以开始处理第二对串了
}
}
scanf("%s %s", a, b);
n = strlen(a), m = strlen(b);
int cnt = 0;
for (int i = 0;i < n && i < m;i++)
{
if (a[i] == b[i])
{
if (('a' <= a[i] && a[i] <= 'z') || ('A' <= a[i] && a[i] <= 'Z'))
{
three = i;
break;//只找第一对,不能让后面的数据把这第一对更新掉了
}
}
}
printf("%s %02d:%02d\n", week[one], two, three);
}