*1014. 福尔摩斯的约会

 1 /*
 2  * Main.c
 3  * 1014. 福尔摩斯的约会
 4  *  Created on: 2014年9月1日
 5  *      Author: Boomkeeper
 6  *****部分通过*********
 7  */
 8 
 9 #include <stdio.h>
10 #include <string.h>
11 
12 /*
13  * 找到“DAY HH:MM”中的“DAY”和“HH”
14  */
15 void find_day_hour(const char str1[],const char str2[]){
16 
17     int len1 = strlen(str1);
18     int len2 = strlen(str2);
19     int i;
20     char tempDay,tempHour;//存放DAY和HH
21     char hour[24] = {'0','1','2','3','4','5','6','7','8','9',
22             'A','B','C','D','E','F','G','H','I','J','K','L','M','N'};
23 
24     //找到DAY
25     for (i = 0; i < (len1 < len2 ? len1 : len2); i++) {
26         if((str1[i] == str2[i]) && (str1[i]<='G' && str1[i]>='A')){
27                 tempDay = str2[i];
28                 break;
29                 }
30     }
31 
32     //计算DAY并打印星期
33     switch(tempDay){
34         case 'A' : printf("MON "); break;
35         case 'B' : printf("TUE "); break;
36         case 'C' : printf("WED "); break;
37         case 'D' : printf("THU "); break;
38         case 'E' : printf("FRI "); break;
39         case 'F' : printf("SAT "); break;
40         case 'G' : printf("SUN "); break;
41     }
42 
43     //找到HH
44     for (i+=1; i < (len1 < len2 ? len1 : len2); i++) {
45         if((str1[i] == str2[i]) && ((str1[i]>='0' && str1[i]<='9') || (str1[i] >= 'A' && str1[i] <= 'N'))){
46             tempHour = str2[i];
47             break;
48         }
49     }
50 
51     //计算HH
52     for(i=0;i<24;i++){
53         if(hour[i] == tempHour){
54             //打印小时
55             printf("%02i:",i);
56             break;
57         }
58     }
59 }
60 
61 /*
62  * 找到“DAY HH:MM”中的“MM”
63  */
64 void find_min(const char str3[],const char str4[]){
65 
66     int len3 = strlen(str3);
67     int len4 = strlen(str4);
68     int i;
69 
70     for(i = 0 ; i < (len3 < len4 ? len3 : len4);i++){
71         if((str3[i]<='z' && str3[i]>='a') && (str4[i]<='z' && str4[i]>='a'))
72             if(str3[i] == str4[i])
73                 break;
74     }
75 
76     //打印分钟
77     printf("%02i
",i);
78 }
79 
80 int main(void){
81 
82     char str1[60],str2[60],str3[60],str4[60];
83 
84     gets(str1);
85     gets(str2);
86     gets(str3);
87     gets(str4);
88 
89     find_day_hour(str1,str2);
90     find_min(str3,str4);
91 
92     return 0;
93 }

这个题目折腾了一天,回想起来难度不是很大,还是得耐心下来,一个<=逻辑运算符一对花括号差点让我疯掉!

题目链接:

http://pat.zju.edu.cn/contests/pat-b-practise/1014

.

原文地址:https://www.cnblogs.com/boomkeeper/p/1014b.html