题目:旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
思路:遍历第一次输入的字符串str1,通过search函数查看str[i]是否出现在str2字符串中,输出没有出现的字符并且把输出过的字符保存起来,每次要输出字符前用search判断该字符是否输出过
代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> int search(char str[],int n,char c)//查找数组中是否有相同字符 { for (int i = 0; i < n; i++) { if (c == str[i]) return 1; } return 0; } void tran_s(char str[],int n) //小写转换大写 { for (int i = 0; i <n; i++) { if('a'<=str[i]&&'z'>=str[i]) str[i] = toupper(str[i]); } } int main() { char str1[1290] = { '0' }, str2[129] = { '0' }, result[128];//保存输出结果 scanf("%s%s", str1,str2); int len1 = strlen(str1), len2 = strlen(str2),step=0; tran_s(str1, len1); tran_s(str2, len2); for (int i = 0; i < len1; i++) { if (!search(str2, len2, str1[i])&&!search(result,step,str1[i]))//遍历str1,如果str1在str2中没出现过并且之前也没输出过的字符,输出,并且把输出过的保存起来 { result[step++] = str1[i]; } } return 0; }