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
.