[PAT-A 1061]Dating

在这里插入图片描述
题目大意:
给四个字符串,其中前两个字符串中,第一对相同的大写字母(A-G)对应日期,第二对相同的字符(0-9)(A-N)对应小时,第三与第四个字符串中,第一对相同的字符(A-Z)(a-z)在字符串中所在的位置表示分钟。
根据四个字符串转换成DAY HH:MM形式

思路:
1.扫描字符串,找第一组相同的第一对大写字母,转换成星期。从当前位置继续寻找,找第二队相同字符,转换位分钟。
注意边界,星期为A-G,小时为0-9 A-N。
2.扫描第二组字符串,找出第一组相同字母(区分大小写)的位置,记作分钟。
3.输出时数字不足两位用0补齐。

AC代码:

//PAT_A 1061
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
	char week[7][5] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
	char str1[70], str2[70], str3[70], str4[70];
	(void)scanf("%s", str1);
	(void)scanf("%s", str2);
	(void)scanf("%s", str3);
	(void)scanf("%s", str4);
	int len1 = strlen(str1);
	int len2 = strlen(str2);
	int len3 = strlen(str3);
	int len4 = strlen(str4);
	int i;
	for (i = 0; i < len1 && i < len2; i++) {
		if (str1[i] == str2[i] && str1[i] >= 'A' && str1[i] <= 'G') {
			printf("%s ", week[str1[i] - 'A']);
			break;
		}
	}
	for (i++; i < len1 && i < len2; i++) {
		if (str1[i] == str2[i]) {
			if (str1[i] >= '0' && str1[i] <= '9') {
				printf("%02d:", str1[i] - '0');
				break;
			}
			else if (str1[i] >= 'A' && str1[i] <= 'N') {
				printf("%02d:", str1[i] - 'A' + 10);
				break;
			}
		}
	}
	for (i = 0; i < len3 && i < len4; i++) {
		if (str3[i] == str4[i]) {
			if (str3[i] == str4[i]) {
				if (str3[i] >= 'A' && str3[i] <= 'Z' || str3[i] >= 'a' && str3[i] <= 'z') {
					printf("%02d", i);
					break;
				}
			}
		}
	}
	return 0;
}
发布了101 篇原创文章 · 获赞 1 · 访问量 3003

猜你喜欢

转载自blog.csdn.net/weixin_44699689/article/details/103993679