C++福尔摩斯的约会

 

 

这道题的要求总结如下:

1.DAY 星期 大写字母:A B C D E F G
2.HH 时 数字+大写字母 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N
3.MM 分 相同位置英文字母即可

要注意一点:HH和MM是个位数时格式是0x

 1 #include <iostream>
 2 #include <string>
 3 #include "stdio.h"
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     string str1,str2,str3,str4;
10     cin >> str1 >> str2 >> str3 >> str4;
11     string day[7] = {"MON ","TUE ","WED ", "THU ","FRI ","SAT ","SUN "};
12     //后两个字符串中相同的字母的索引位置
13     int index = 0;
14     //得到两个数组中最短的那个的长度
15     int length1 = str1.length() < str2.length()?str1.length():str2.length();
16     int length2 = str3.length() < str4.length()?str3.length():str4.length();
17 
18     bool flag1 = false,flag2 = false;
19     for(int i = 0;i < length1;++i)
20     {
21         //获取DAY
22         if(str1[i] == str2[i])
23         {
24             if(!flag1&& str1[i] >= 'A' &&str1[i] <= 'G')
25             {
26                 int j = str1[i]-'A';
27                 cout << day[j];
28                 flag1 = true;
29                 i++;
30             }
31             if(flag1 && !flag2)
32             {
33                 if((str1[i] >= '0' &&str1[i] <= '9')||(str1[i] >= 'A' &&str1[i] <= 'N'))
34                 {
35                     int hour;
36                     if(str1[i] >= '0' && str1[i] <='9')
37                     {
38                         hour = str1[i]-'0';
39                     }else if(str1[i] >= 'A' && str1[i] <='N')
40                     {
41                         hour = str1[i]-'A'+10;
42                     }
43                     printf("%02d:",hour);
44                     //cout << "HH是:" << HH <<endl;
45                     flag2 = true;
46                 }
47             }
48         }
49         if(flag1&&flag2)//DAY和HH都有值了
50             break;
51     }
52 
53     for(int i = 0;i < length2;++i)
54     {
55         if(str3[i] == str4[i])
56         {
57             if((str3[i]>='a' && str3[i] <= 'z')||(str3[i]>='A' && str3[i] <= 'Z'))
58             {
59                 index = i;
60                 //cout << "MM是:" << index <<endl;
61                 printf("%02d",index);
62                 break;
63             }
64         }
65     }
66     return 0;
67 }

我这段代码里面有很多可以改进的地方,判断字母的可以用函数

 

posted on 2020-04-23 15:26  秃头女孩今夜也不睡觉  阅读(166)  评论(0编辑  收藏  举报

导航