思路:首先用一个二维字符数组Day存储星期几(注意,这里数组第二维大小不能等于3, 而要大于3,否则会编译错误)。先找出前两个字符串中第一个相同的大写字母,这里字母范围应该限定在A~G之间,而不是A~Z。对应到Day数组输出星期。然后,继续在前两个字符串中,找剩下的里面第一个相同的字符,数字也符合。不过要注意0~23输出的时候,要判断是否第一位有数,没有的话用0补充。再在后两个字符串中,找第一个相同的英文字母,大小写均可。输出时也要判断第一位是否有数,没有的话用0补充。
代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main(){
char str1[100],str2[100],str3[100],str4[100];
cin >> str1;
cin >> str2;
cin >> str3;
cin >> str4;
int n1 = min(strlen(str1),strlen(str2));
int n2 = min(strlen(str3),strlen(str4));
char Day[10][5] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
int flag = 0;
for(int i = 0;i < n1;i ++){
if(str1[i] == str2[i] && str1[i] >= 'A' && str1[i] <= 'G'){ //一定要在A到G之间
//cout << Day[str1[i] - 'A'];
printf("%s",Day[str1[i] - 'A']);
flag = i;
break;
}
}
cout << ' ';
for(int i = flag+1;i < n1;i ++){
if(str1[i] == str2[i]){
if(str1[i] >= '0' && str1[i] <= '9'){ //0和9要加上''
//printf("%02d",str1[i] - '0');
cout << '0' << str1[i] - '0'; //最后要减去'0'
//cout << '0' << str1[i]; //这个是错的,有些样例过不去
break;
}
else if(str1[i] >= 'A' && str1[i] <= 'N'){ //一定要在A到N之间
//printf("%02d",str1[i] - 'A' + 10);
cout << str1[i]-'A' + 10; //最后要加上10
//cout << '1' << str1[i]-'A'; //这个是错的,有些样例过不去
break;
}
}
}
cout << ':';
for(int i = 0;i < n2;i ++){
if(str3[i] == str4[i]){
if((str3[i] >= 'A' && str3[i] <= 'Z') || (str3[i] >= 'a' && str3[i] <= 'z')){
if(i <= 9){
cout << '0' << i << endl;
break;
}
else{
cout << i << endl;
break;
}
}
}
}
return 0;
}
版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~