转跳点:??
夏洛克的问题就应该找华生,(花生,卷福找你)。这道题其实不难。就是有几个坑点
大概就这几点,第二点有点难理解,我来举个?
假设输入的前两行数据如下:
FMOPQRSTNA
FMOPQRSTNA
这里输出的结果因该是
SAT 22
但如果被覆盖的话就会有很多种可能,例如
MON 01
或者是
SAT 01
因为在这组输入种有不止一组匹配的字符,所以导致了不断的覆盖。
其他都是些细节问题,例如输出的时候只有一位的时候需要用0来补全,最后一个输出后面没有空格……不叭叭了,贴代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 const char *WEEKDAYS[] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; 6 7 int main(void) 8 { 9 int count = 0; 10 int PassWord[3] = {-1, -1, -1}; 11 char buf[4][61]; 12 13 for (int i = 0; i < 4; i++) 14 { 15 scanf("%s", buf[i]); 16 } 17 18 int i = 0, j = 0; 19 20 while ((‘\0‘ != buf[0][i] && ‘\0‘ != buf[1][j]) || (‘\0‘ != buf[2][i])) 21 { 22 if (1 == count && buf[0][i] == buf[1][j]) 23 { 24 if (‘0‘ <= buf[0][i] && ‘9‘ >= buf[0][i]) 25 { 26 PassWord[count++] = buf[0][i] - ‘0‘; 27 } 28 else if (‘A‘ <= buf[0][i] && ‘N‘ >= buf[0][i]) 29 { 30 PassWord[count++] = buf[0][i] - ‘A‘ + 10; 31 } 32 } 33 if (0 == count && buf[0][i] == buf[1][j]) 34 { 35 if (‘A‘ <= buf[0][i] && ‘G‘ >= buf[0][i]) 36 { 37 PassWord[count++] = buf[0][i] - ‘A‘; 38 } 39 } 40 if (-1 == PassWord[2] && buf[2][i] == buf[3][j] && ((buf[2][i] >= ‘a‘ && buf[2][i] <= ‘z‘) || (buf[2][i] >= ‘A‘ && buf[2][i] <= ‘Z‘))) 41 { 42 PassWord[2] = i; 43 } 44 i++; 45 j++; 46 } 47 48 printf("%s %02d:%02d\n", WEEKDAYS[PassWord[0]], PassWord[1], PassWord[2]); 49 return 0; 50 }
PTA不易,诸君共勉!
原文:https://www.cnblogs.com/daker-code/p/12127565.html