题目:
思路:
- 扫描前两个字符串,寻找第一队相同位置的A~G的大写字母,之后求出其与字符‘A’的距离
- 在步骤1的基础上,继续往后寻找,直到碰到第一对相同位置的0~9或A~N的字符,将其分别转换为0~9或10~13
- 扫描后两个字符串,寻找第一队相同位置的A~Z或a~z的英文字母,获取位置
注意点:
注意题目日期、时、分钟的字母范围
代码:
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int maxn = 80; 5 6 char days[7][5] = { "MON","TUE","WED","THU","FRI","SAT","SUN" }; 7 8 int main() 9 { 10 char line1[maxn], line2[maxn]; 11 12 //获取日期 13 scanf("%s%s", line1, line2); 14 int i; 15 for (i = 0;i < 60;i++) 16 { 17 //注意题目条件范围 18 if(line1[i] == line2[i] && line1[i]>='A' && line1[i]<='G') 19 { 20 printf("%s ", days[line1[i] - 'A']); 21 break; 22 } 23 } 24 25 //获取时 26 for (i++;i < 60;i++) 27 { 28 if (line1[i] == line2[i]) 29 { 30 //注意题目条件范围 31 if (line1[i] >= '0' && line1[i] <= '9') 32 { 33 printf("%02d:", line1[i] - '0'); 34 break; 35 } 36 if (line1[i] >= 'A' && line1[i] <= 'N') 37 { 38 printf("%02d:", line1[i] - 'A' + 10); 39 break; 40 } 41 } 42 } 43 44 //获取分钟 45 scanf("%s%s", line1, line2); 46 for (int i = 0;i < 60;i++) 47 { 48 //注意题目条件范围 49 if (isalpha(line1[i]) && line1[i] == line2[i]) 50 { 51 printf("%02d", i); 52 break; 53 } 54 } 55 return 0; 56 }