前言:每段文字是不超过 10的5次方个字符的串。容易超时。所以采用单字符循环的方式输入,即输入一个输出一个的方式。
1.定义一个book数组用来记录不能输出的字符。值为0可以输出,值为-1不能输出。
2.book['+'] 的值为-1时,无法输出大写。大写字母的book全部变成-1。
3.判断book的值输出即可。
下面为代码,代码中有注释。
#include<stdio.h>
int main () {
//输入坏键。
char s[81] = { 0 };
gets(s);
int len = strlen(s);
//book用来记录坏键,值为0可以输出,值为-1不能输出。
int book[132] = { 0 };
for (int i = 0; i < len; i++) {
book[s[i]] = -1;
//输入的坏键为大写字母,对应的小写字母也无法输出。对应的book都变成-1。
if (s[i] >= 'A'&&s[i] <= 'Z') {
book[s[i] + 32] = -1;
}
}
//上档键坏了,全部大写字母的book变成-1。
if (book['+'] == -1) {
for (int i = 65; i <= 90; i++) {
book[i] = -1;
}
}
//输入第二行
char ch;
scanf("%c", &ch);
while (ch != '\n') {
//输出book为0的ch即可。
if (book[ch] == 0) {
printf("%c", ch);
}
scanf("%c", &ch);
}
printf("\n");
return 0;
}
|