PAT乙级考试-1033 旧键盘打字 (20分)

题目
PAT乙级考试-1033 旧键盘打字 (20分)_第1张图片
PAT乙级考试-1033 旧键盘打字 (20分)_第2张图片
思路

  1. 录入数据
    将坏键录入ban[]数组,应该输入的字符串录入ch[]数组
    这里需要使用fgets()函数来录入数据,因为坏键有可能是空的,如果用scanf()函数来录入数据在这种情况下就会跳过第一个空行,导致有一个用例无法通过;
    2.判断
    遍历整个ch[]数组,先判断该字符和该字符的大写形式是否在bad[]数组(由于toupper函数不会处理非大写字母,所以可以直接使用),如果在,则跳过,如果不在,根据bad数组是否有‘+’再判断该字符是否是大写字母,如果是,则跳过,否则输出
#include
#include
#include

int main(void)
{
     
	char bad[70], ch[100001];
	fgets(bad, 70, stdin);
	fgets(ch, 100001, stdin);
	char* flag = strchr(bad, '+');

	for (int i = 0; ch[i] != '\0'; i++)
	{
     
		if (strchr(bad, ch[i]) || strchr(bad, toupper(ch[i])))
			continue;
		else
			if (flag)
				if (ch[i] >= 'A' && ch[i] <= 'Z')
					continue;
		putchar(ch[i]);
	}
	return 0;
}

你可能感兴趣的:(PAT乙级考试,算法,数据结构,c语言)