2301_79758507 2024-02-02 09:38 采纳率: 100%
浏览 5
已结题

PAT乙级真题1029-旧键盘

问题:我的测试点三一直过不了,麻烦大家帮忙看看嘞
1029 旧键盘
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
输入格式:
输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。
输出格式:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。
输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI
代码:

#include <stdio.h>
#include <string.h>
int main()
{
    int i,j=0,t=0;
    char a[81],b[81],c[81]={0};
    scanf("%s",a);
    scanf("%s",b);
    for(i=0; i<strlen(a); i++)
    {
        if(a[i]!=b[j])
        {
            if(a[i]>='a' && a[i]<='z')
                c[t++] = a[i] - 32;
            if((a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9'))
                c[t++] = a[i];
        }
        else j++;
    }
    int l=strlen(c);
    for(i=0; i<l-1; i++)
    {
        for(j=i+1; j<l; j++)
        {
            if(c[j]==c[i])
                c[j]='*';
        }
    }
    for(i=0; i<l; i++)
    {
        if(c[i]!='*')
            printf("%c",c[i]);
    }
    printf("\n");
    return 0;
}

  • 写回答

5条回答 默认 最新

  • 2301_79758507 2024-02-02 13:24
    关注

    我已经修改正确了,以上代码在处理字符串上应该是没有问题的,测试点三一直没有通过是因为if((a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9'))存在冗余判断,应将其改为else

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月10日
  • 已采纳回答 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图