• *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

    .

  • 相关阅读:
    程序的编码问题
    man DMIDECODE
    Github熟悉一
    man uname
    第一轮铁大树洞APP开发冲刺(2)
    第九周学习进度
    第九周安卓开发学习总结(3)
    第一轮铁大树洞APP开发冲刺(1)
    第九周安卓开发学习总结(2)
    第九周安卓开发学习总结(1)
  • 原文地址:https://www.cnblogs.com/boomkeeper/p/1014b.html
Copyright © 2020-2023  润新知