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 }
相關文章
相關標籤/搜索