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