PAT(乙级)1014
生活随笔
收集整理的這篇文章主要介紹了
PAT(乙级)1014
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1014. 福爾摩斯的約會 (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
這道題目,略顯(真TM坑爹,抱歉,我又說臟話了,但是實在不能忍啊!!!)坑爹。題目的意思看起來說的很清楚,實則完全沒有說清楚,題目是“橫看成嶺側成峰”啊!,但是標準答案只有一個。哎,等會了寫篇文章總結一下刷了10多篇后的體會。這里就不廢話了(感覺已經廢話已經有點多了,哈哈)。重點來了。 首先,第一個確定的星期幾的問題,這個要求必須是大寫字母,即:if ('A' <= str[0][i] && str[0][i] <= 'G') 第二,這個題目就表達的沒什么問題了,要求是數字或者大寫字母,即: if (str[0][i] == str[1][i] && (str[0][i] >= '0' && '9' >= str[0][i]))或者是if (str[0][i] == str[1][i] && ('A' <= str[0][i] && str[0][i] <= 'N'))兩種情況 第三,這個也很坑,實質的要求是,只能是字母。即:if (('a' <= str[2][i] && 'z' >= str[2][i]) || ('A' <= str[2][i] && str[2][i] <= 'Z')) 好了,上代碼: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h>int main() {char str[4][60];char day[7][4] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };int k = 0;int num1 = 0, num2 = 0;for (int i = 0; i < 4; i++){scanf("%s", &str[i]);}for (int i = 0; i < strlen(str[0]); i++){if (str[0][i] == str[1][i]){if ('A' <= str[0][i] && str[0][i] <= 'G'){num1 = str[0][i] - 65; //確定星期k = i;break;}}}for (int i = k + 1; i < strlen(str[0]); i++){if (str[0][i] == str[1][i] && (str[0][i] >= '0' && '9' >= str[0][i])){num2 = str[0][i] - '0'; //確定小時break;}if (str[0][i] == str[1][i] && ('A' <= str[0][i] && str[0][i] <= 'N')){num2 = str[0][i] - 'A' + 10; //確定小時break;}}for (int i = 0; i < strlen(str[2]); i++){if (str[2][i] == str[3][i]){if (('a' <= str[2][i] && 'z' >= str[2][i]) || ('A' <= str[2][i] && str[2][i] <= 'Z')){k = i;break;}}}printf("%s ", day[num1]);if (num2 < 10){printf("0%d:", num2);}else{printf("%d:", num2);}if (k < 10){printf("0%d", k);}else{printf("%d", k);}system("pause");return 0; }忘記說明了,補在這里,代碼是在VS2015下測試的,為了使用scanf這個函數,在代碼第一行加入了一個宏命令。system("pause")是為了讓界面卡一下,方便看輸出。當然了,我在最后的輸出格式上做的不太好,其實后面的小時和分鐘,可以使用相同的一個函數,能少寫點代碼。然后,就沒有然后了。
轉載于:https://www.cnblogs.com/zy666/p/10504350.html
總結
以上是生活随笔為你收集整理的PAT(乙级)1014的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习_路径
- 下一篇: jmeter测试元件--控制器