题目


思路
- 录入数据
将坏键录入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;
}
本文介绍了一种使用C语言的程序设计方法,用于从输入字符串中筛选并输出未被标记为“坏键”的字符。程序首先读取坏键列表和待处理字符串,然后通过遍历字符串并与坏键列表对比,跳过所有匹配的字符及其大写形式,最终输出符合条件的字符。

4630

被折叠的 条评论
为什么被折叠?



