PAT B1014 福爾摩斯的約會 20

2021-08-21 10:41:35 字數 1403 閱讀 4791

1014 福爾摩斯的約會 (20)(20 分)

大偵探福爾摩斯接到一張奇怪的字條:「我們約會吧! 3485djdkxh4hhge 2984akdfkkkkggedsb s&hgsfdk d&hyscvnm」。大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間「星期四 14:04」,因為前面兩字串中第1對相同的大寫英文本母(大小寫有區分)是第4個字母'd',代表星期四;第2對相同的字元是'e',那是第5個英文本母,代表一天裡的第14個鐘頭(於是一天的0點到23點由數字0到9、以及大寫字母a到n表示);後面兩字串第1對相同的英文本母's'出現在第4個位置(從0開始計數)上,代表第4分鐘。現給定兩對字串,請幫助福爾摩斯解碼得到約會的時間。

輸入格式:

輸入在4行中分別給出4個非空、不包含空格、且長度不超過60的字串。

輸出格式:

在一行中輸出約會的時間,格式為「day hh:mm」,其中「day」是某星期的3字元縮寫,即mon表示星期一,tue表示星期二,wed表示星期三,thu表示星期四,fri表示星期五,sat表示星期六,sun表示星期日。題目輸入保證每個測試存在唯一解。

輸入樣例:

3485djdkxh4hhge 

2984akdfkkkkggedsb

s&hgsfdk

d&hyscvnm

輸出樣例:

thu 14:04
分析:

1.從前面兩字串中,找到第1對相同的大寫英文本母(a~g),得到日期。第4個字母'd',代表星期四

2.從前面兩字串中,找到第2對相同的符合條件的字元(0~9或者是a~z),得到小時。'e',是第5個英文本母,代表一天裡的第14個鐘頭(於是一天的0點到23點由數字0到9、以及大寫字母a到n表示),這裡注意從第一對符合條件的字母後面的位置開始尋找。

3.從後面兩字串中,找到第一對相同的英文本母在字串中的位置,為分鐘。

**:

#include #include int main()

}for(i++; i < 60; i++)//i++保證在第一對相等的合法字元後進行搜尋

}int minute;//表示分鐘

for(i = 0; i < 60; i++)

}char *days[7] = ;

int day = result[0] - 'a';//表示日期的字串的位置

int hour = isdigit(result[1]) ? result[1] - '0' : result[1] - 'a' + 10;//計算小時數

printf("%s %02d:%02d", days[day], hour, minute);

return 0;

}

PATB1014 福爾摩斯的約會

思路 輸入 四個字串 分別求其第乙個滿足條件的字元。用hash輸出 知識點 求第乙個滿足條件的字元用 for break及時退出迴圈 乙個字串中分兩次不同的的遍歷 來判斷的不同的條件 用 i 來連線 for i 0 i size1 i for i i 1 i size1 i 參考 void b101...

PAT B1014 福爾摩斯的約會

大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm。大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間星期四 14 04,因為前面兩字串中第 1 對相同的大寫英文本母 大小寫有區分 是第 4 ...

PATB1014 福爾摩斯的約會

1014 福爾摩斯的約會 20 分 大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm。大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間星期四 14 04,因為前面兩字串中第 1 對相同的大...