算法笔记 2.7 D

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 void get_max(char *&a, char *&b)
 6 {
 7     bool flag = false;
 8     int len1 = strlen(a), len2 = strlen(b);
 9     int len = (len1 > len2) ? len2 : len1;
10     for(int i = 0; i < len; ++i)
11     {
12         if(*(a + i) > *(b + i))
13         {
14             flag = true;
15             char *temp = a;
16             a = b;
17             b = temp;
18             break;
19         }
20         else if(*(a + i) == *(b + i))
21             continue;
22         else 
23             return;//这里一开始写的break,导致直接变成按字符串长度排序
24     }
25     if(flag)
26         return;
27     else
28     {
29         if(len2 < len1)
30         {
31             char *temp = a;
32             a = b;
33             b = temp;
34         }
35     }
36 }
37 
38 void get_ordered(char *&a, char *&b, char *&c)
39 {
40     get_max(b, c);
41     get_max(a, b);
42     get_max(b, c);
43 }
44 
45 int main()
46 {
47     char a[35], b[35], c[35];
48     scanf("%s", a);
49     scanf("%s", b);
50     scanf("%s", c);
51     char *x = a, *y = b, *z = c;
52     get_ordered(x, y, z);
53     printf("%s\n%s\n%s\n", x, y, z);
54 }

 

posted @ 2020-03-27 18:57  Elsanna2018  阅读(119)  评论(0)    收藏  举报