1014. 福尔摩斯的约会 (20)

题目链接:https://www.patest.cn/contests/pat-b-practise/1014

思路:(1)用一个数组str[4][61]存储四个字符串,

(2)逐个比较前两个字符串,找到第一个相同的大写字母。得到DAY,作为下标输出对应的字符。

(3)再查找出现第二对相同字符的字符c,作为小时h。截止。

(4)查找后两个字符串,查找出现相同英文字符出现的位置。作为分钟m

注意点:

(1)第一个是大写字母A-G,第二个是之后出现的大写字母A-N或者0-9,第三个是字母就行a-z,A-Z

 1 #include<stdio.h>
 2 //#include<string.h>
 3 #include<ctype.h>
 4 char day[][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
 5 int main()
 6 {
 7     char str[4][61];
 8     int i,d,h;
 9     for(i=0;i<4;i++)scanf("%s",str[i]);     //读入四个字符串
10     //len=strlen(str[0])>strlen(str[1])?strlen(str[1]):strlen(str[0]); 
11     i=0;
12     while(1)               //第一个大写字符 
13     {
14         if(str[0][i]==str[1][i]&&str[0][i]>=65&&str[0][i]<=71)
15         {
16             d=str[0][i]-65;
17             break;
18         }
19         i++;
20     }
21     i++;
22     while(1)                //第二个字符 
23     {
24         if(str[0][i]==str[1][i])
25         {
26             if(str[0][i]>=65&&str[0][i]<=78){
27                 h=str[0][i]-55;
28                 break;
29             }
30             if(isdigit(str[0][i])){
31                 h=str[0][i]-48;
32                 break;
33             }
34         }
35         i++;
36     }
37     i=0;
38     while(1)   //分钟 
39     {
40         if(str[2][i]==str[3][i]&&isalpha(str[2][i]))break;
41         i++;
42     }
43     printf("%s %02d:%02d\n",day[d],h,i);
44     return 0;
45  } 

 

posted @ 2018-01-21 14:28  爱你的笑  阅读(122)  评论(0编辑  收藏  举报