C++福尔摩斯的约会

 

 

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 }

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

C++福尔摩斯的约会

 

原文链接: https://www.cnblogs.com/apprendre-10-28/p/12761069.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++福尔摩斯的约会

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/343957

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:23
下一篇 2023年3月2日 上午2:23

相关推荐