算法训练:字符串比较

资源限制
时间限制:1.0s   内存限制:512.0MB
独立实现标准字符串库的strcmp函数,即字符串比较函数,从键盘输入两个字符串,按字典序比较大小,前者大于后者输出1,前者小于后者输出-1,两者相等输出0。
样例输入: 
apple one
样例输出:
-1
样例输入: 
hello he
样例输出:
1

样例输入:
hello hello
样例输出:
0

思路:我的思路是分两种情况,前者长还是后者长分别做标记进行讨论。去网上搜没有找到类似的题目,如果有大神思路更好可以私信我。
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<stdbool.h>
 5 
 6 int main(void)
 7 {
 8     char s[2][100] = {0};
 9     int i,j = -1;
10     bool f = false;
11     int flag = 0;
12 
13     for (i = 0; i < 2; i++)
14     {
15         while (1)
16         {
17             scanf("%c", &s[i][++j]);
18             if (s[i][j] == ' ' || s[i][j] == '
')
19             {
20                 s[i][j] = 0;
21                 j = -1;
22                 break;
23             }
24         }
25     }
26     
27     int len1 = strlen(s[0]);
28     int len2 = strlen(s[1]);
29 
30     if (len1 >= len2)  //如果字符串一较长
31     {
32         f = true;
33     }
34     
35     if (f == true) //前者较长或者两者等长
36     {
37         for (i = 0; i < len1; i++)
38         {
39             if (s[1][i] != s[0][i])
40             {
41                 flag = 1;  //字符串一长并且遇到不同
42                 break;
43             }
44         }
45     }
46     else  //后者较长
47     {
48         for (i = 0; i < len2; i++)
49         {
50             if (s[1][i] != s[0][i])
51             {
52                 flag = 2;  //字符串二长并且遇到不同
53                 break;
54             }
55         }
56     }
57 
58     if (i == len1 && flag == 0)  //前者字符串较长 并且可遍历到末尾 即两者相等
59     {
60         printf("0");
61     }
62     else if (i < len1 && flag == 1)  //前者较长并且两者出现不同字符
63     {
64         if (s[0][i] > s[1][i]) //说明前者更大
65         {
66             printf("1");
67         }
68         else if(s[0][i] < s[1][i])
69         {
70             printf("-1");
71         }
72     }
73     else if(i < len2 && flag == 2) //后者较长并且出现不同字符
74     {
75         if (s[1][i] > s[0][i])
76         {
77             printf("-1");
78         }
79         else if (s[1][i] < s[0][i])
80         {
81             printf("1");
82         }
83     }
84 
85     return 0;
86 }


原文地址:https://www.cnblogs.com/ZhengLijie/p/12531761.html