zoukankan      html  css  js  c++  java
  • Comparison of Android versions(strcmp的应用)

    Description

    As an Android developer, itˇs really not easy to figure out a newer version of two kernels, because Android is updated so frequently and has many branches. Fortunately, Google identifies individual builds with a short build code, e.g. FRF85B. 

    The first letter is the code name of the release family, e.g. F is Froyo. The code names are ordered alphabetically. The latest code name is K (KitKat). 
    The second letter is a branch code that allows Google to identify the exact code branch that the build was made from, and R is by convention the primary release branch. 

    The next letter and two digits are a date code. The letter counts quarters, with A being Q1 2009. Therefore, F is Q2 2010. The two digits count days within the quarter, so F85 is June 24 2010. 

    Finally, the last letter identifies individual versions related to the same date code, sequentially starting with A; A is actually implicit and usually omitted for brevity. 

    Please develop a program to compare two Android build numbers.
     

    Input

    The first line is an integer n (1 <= n <= 2000), which indicates how many test cases need to process. 

    Each test case consists of a single line containing two build numbers, separated by a space character.
     

    Output

    For each test case, output a single line starting with ¨Case #: 〃 (# means the number of the test case). Then, output the result of release comparison as follows: 

    ● Print "<" if the release of the first build number is lower than the second one; 
    ● Print "=" if the release of the first build number is same as he second one; 
    ● Print ">" if the release of the first build number is higher than the second one. 

    Continue to output the result of date comparison as follows: 
    ● Print "<" if the date of the first build number is lower than the second one; 
    ● Print "=" if the date of the first build number is same as he second one; 
    ● Print ">" if the date of the first build number is higher than the second one. 

    If two builds are not in the same code branch, just compare the date code; if they are in the same code branch, compare the date code together with the individual version.
     

    Sample Input

    2
    FRF85B EPF21B
    KTU84L KTU84M
     

    Sample Output

    Case 1: > >
    Case 2: = <
     
    题目意思:这是一个安卓版本代码的比较,这里每组数据有两个代码代表不同的安卓版本分别得出版本的大小和日期的大小。版本代码中第一个字母代表着大版本,第二个字母代表分支版本,第三四五代表着日期,最后一个字母代表与日期相关的单个版本。题目要求是,先比较大版本,之后比较日期。如果分支版本相同,那么既要比较日期还要比较和日期相关的单个版本,如果分支版本不同,那么只需比较日期即可。
     
    解题思路:前两天我还刚刚给我的大魅族升级到了安卓8.0,另一台华为也升级到了8.0,都彻底吃上了奥利奥。这个题对于不了解安卓版本的人来说看起来确实吃点力,实际上这个问题化简来看就可以看成:

    1、比较两个字符串的第一个字母的大小;

    2、如果两个字符串的第二个字母不同就比较接下来的三个字母的大小,如果第二个字母相同就比较剩余的四个字母!

     就是strcmp的应用

     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     int n,i,j,k,m;
     6     char s1[11],s2[11],a[11],b[11];
     7     scanf("%d",&n);
     8     getchar();
     9     for(i=1; i<=n; i++)
    10     {
    11         memset(a,0,sizeof(a));
    12         memset(b,0,sizeof(b));
    13         memset(s1,0,sizeof(s1));
    14         memset(s2,0,sizeof(s2));
    15         scanf("%s %s",s1,s2);
    16         printf("Case %d: ",i);
    17         if(s1[0]==s2[0])
    18         {
    19             printf("= ");
    20         }
    21         else if(s1[0]>s2[0])
    22         {
    23             printf("> ");
    24         }
    25         else if(s1[0]<s2[0])
    26         {
    27             printf("< ");
    28         }
    29         k=0;
    30         m=0;
    31         if(s1[1]==s2[1])
    32         {
    33             for(j=2; j<=5; j++)
    34             {
    35                 a[k++]=s1[j];
    36                 b[m++]=s2[j];
    37                 a[k]='';
    38                 b[m]='';
    39             }
    40         }
    41         else
    42         {
    43             for(j=2; j<=4; j++)
    44             {
    45                 a[k++]=s1[j];
    46                 b[m++]=s2[j];
    47                 a[k]='';
    48                 b[m]='';
    49             }
    50         }
    51         if(strcmp(a,b)==0)
    52             printf("=");
    53         else if(strcmp(a,b)<0)
    54         {
    55             printf("<");
    56         }
    57         else if(strcmp(a,b)>0)
    58         {
    59             printf(">");
    60         }
    61         printf("
    ");
    62     }
    63     return 0;
    64 }
     
     
     
  • 相关阅读:
    HTML常用标签(自用,可能不严谨,勿怪)
    Nginx负载均衡和反向代理设置
    Django的列表反序
    Python装饰器通用样式
    WCF、Web API、WCF REST、Web Service的区别
    C++11 标准新特性: 右值引用与转移语义
    在windows下vs使用pthread
    部分浏览器记住密码后可能会带来的问题
    SQL Server、 My SQL、PG Sql、Oracle、 Access 不同数据库sql差异
    sql中select语句的逻辑执行顺序
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/9047756.html
Copyright © 2011-2022 走看看