PAT1029 旧键盘(C完全正确)

题目:旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。

思路:遍历第一次输入的字符串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;
}
原文地址:https://www.cnblogs.com/zongji/p/12403803.html