Comparison of Android versions(strcmp的应用)

Descriptiongit

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.
 

Inputide

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.
 

Outputui

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 Inputspa

2
FRF85B EPF21B
KTU84L KTU84M
 

Sample Outputcode

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

 

 

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

二、若是两个字符串的第二个字母不一样就比较接下来的三个字母的大小,若是第二个字母相同就比较剩余的四个字母!ip

 就是strcmp的应用ci

 

 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]='\0'; 38                 b[m]='\0'; 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]='\0'; 48                 b[m]='\0'; 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("\n"); 62  } 63     return 0; 64 }
相关文章
相关标签/搜索