1029. 旧键盘(20)--做题记录

1029. 旧键盘(20)

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

输入格式:

输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

输出格式:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。

输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI

#include <iostream>
#include <cstring>
#include <set>

using namespace std;
int main() {

  set<int> inputSuccessSet;
  set<int> hasDestorySet;
  
  char inputOri[80], input[80];
  
  scanf("%s %s", inputOri, input);

  int i;
  for (i = 0; i < strlen(input); i++) {
    int data = input[i];
    if (data > 96) {
      data -= 32;
    }
    inputSuccessSet.insert(data);
  }

  for (i = 0; i < strlen(inputOri); i++) {
    int data = inputOri[i];
    if (data > 96) {
      data -= 32;
    }
    if(inputSuccessSet.find(data) == inputSuccessSet.end()) {
      if(hasDestorySet.find(data) == hasDestorySet.end()) {
        hasDestorySet.insert(data);
        printf("%c", data);
      }
    }
  }
  

  return 0;
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于51单片机的矩阵键盘输入2761后数码管循环显示2761然后276.1然后27.61然后2.761然后7612-761.2-76.123-7.612-7127-612.7-61.27-6.127-1276-127.6-12.76-1.276-2761-. 的代码: ``` #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf}; //数码管显示0-9和.的编码 sbit L1 = P2^0; //矩阵键盘一行 sbit L2 = P2^1; //矩阵键盘第二行 sbit L3 = P2^2; //矩阵键盘第三行 sbit L4 = P2^3; //矩阵键盘第四行 sbit C1 = P2^4; //矩阵键盘第一列 sbit C2 = P2^5; //矩阵键盘第二列 sbit C3 = P2^6; //矩阵键盘第三列 uchar keyscan() //矩阵键盘扫描函数 { uchar val = 0xff; //初始化键值 L1 = 0; //第一行置低电平 if (C1 == 0) {val = 1;} //第一列检测按键 if (C2 == 0) {val = 2;} //第二列检测按键 if (C3 == 0) {val = 3;} //第三列检测按键 L1 = 1; //第一行恢复高电平 L2 = 0; //第二行置低电平 if (C1 == 0) {val = 4;} //第一列检测按键 if (C2 == 0) {val = 5;} //第二列检测按键 if (C3 == 0) {val = 6;} //第三列检测按键 L2 = 1; //第二行恢复高电平 L3 = 0; //第三行置低电平 if (C1 == 0) {val = 7;} //第一列检测按键 if (C2 == 0) {val = 8;} //第二列检测按键 if (C3 == 0) {val = 9;} //第三列检测按键 L3 = 1; //第三行恢复高电平 L4 = 0; //第四行置低电平 if (C1 == 0) {val = 0;} //第一列检测按键 if (C2 == 0) {val = 10;} //第二列检测按键 if (C3 == 0) {val = 0xff;} //第三列检测按键(不启用) L4 = 1; //第四行恢复高电平 return val; //返回键值 } void display(uchar num) //数码管显示函数 { static uchar pos = 0; //静态变量,记录数码管显示的位置 static uchar data[] = {0, 0, 0, 0}; //静态数组,保存数码管显示的数据 uchar i = 0; //循环计数器 if (num == 10) //按下小数点键 { pos = 1; //从第二位开始显示 data[0] = 0; //第一位清零 } else //按下数字键 { if (pos == 0) //整数部分 { data[3] = data[2]; data[2] = data[1]; data[1] = data[0]; data[0] = num; } else //小数部分 { data[pos-1] = num; } pos++; //位置向后移动一位 if (pos > 4) {pos = 1;} //位置超出范围,回到第一位 } //数码管循环显示数据 for (i=0; i<4; i++) { P0 = table[data[i]]; //数码管显示对应的数字或小数点 delay(5); //延时一段时间,避免闪烁 P0 = 0xff; //关闭数码管 delay(5); //延时一段时间,避免闪烁 } } void main() { while (1) //循环执行 { uchar val = keyscan(); //扫描矩阵键盘 if (val != 0xff) //判断是否有按键按下 { display(val); //数码管显示对应的数字或小数点 } } } ``` 注意:以上代码仅供参考,具体实现可能需要根据具体情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值