PAT B1014 A1061 福尔摩斯的约会

PAT B1014 A1061 福尔摩斯的约会_第1张图片

1.题意首先要理解正确。题意是相同位置的相同字符,而不是遍历s1,对于每一个s1的元素,搜索s2中符合要求的相同字符。第一遍我这样做,非常复杂。但是我也觉得这题没有表达清楚,有点头疼。

2.隐藏的信息必须要解读出来,比如题中的week,是具体到A-G而不是仅仅简单解读为大写字母。做题的过程中发现若用s[0][i]>='A'&& s[0][i]<='G'代替isupper,就可以AC。所以说做题要用笔,详细写出已知信息,养成习惯。

//1014 福尔摩斯的约会 (20分)
//字符串匹配
#include 
#include 
char week[8][4] = { "","MON","TUE","WED","THU","FRI","SAT","SUN" };
char hour[25] = "0123456789ABCDEFGHIJKLMN";
int main()
{
	char s[4][65] = { 0 };
	for (int i = 0; i < 4; i++) {
		scanf("%s", s[i]);
	}
	char result[2] = { 0 };
	int count = 0;
	int i, j;//个字符串的游标
	for (i=j=0; s[0][i] && s[0][j]; i++, j++) {
		if (s[0][i] == s[1][j] && s[0][i]>='A'&& s[0][i]<='G')
		{
			result[count++] = s[0][i];
			break;
		}
	}
	i++, j++;//这一步非常容易忘记
	for (; s[0][i] && s[0][j]; i++, j++) {
		if (s[0][i] == s[1][j] && (s[0][i] >= '0' && s[0][i] <= '9' || s[0][i] >= 'A' && s[0][i] <= 'N'))
		{
			result[count++] = s[0][i];
			break;
		}
	}
	int x = 0;
	for (i = j = 0; s[2][i] && s[3][j]; i++, j++) {
		if (isalpha(s[2][i]) && s[2][i] == s[3][j]) {
			x = j;
			break;//break也容易忘记
		}
	}
	int hh;
	for (int i = 0; i < 24; i++) {
		if (result[1] == hour[i])
			hh = i;
	}
	printf("%s %02d:%02d", week[result[0] - 'A' + 1],hh , x);
	return 0;
}

 

你可能感兴趣的:(PAT入门,PAT,B1014,PAT,A1061)