【PAT B1029】旧键盘(C语言)

在这里插入图片描述
注意:当输入只有一个,且这一个还是个坏键,比如第一行输入3,第二行什么都不输入,回车。还有注意,坏的键全在第一行比第二行长的部分,比如坏键是123,第一行输入456123,第二行输入456

#include <stdio.h>
#include <string.h>
#define GOOD	2
#define BAD		1
#define MAX_STRING 81
char input[MAX_STRING];
char test[MAX_STRING];
int len;
int read_input ();
int deal_result ();
int print_result ();
/*-------------------- 将输出读进来,并做相关标记 ------------------------*/
int read_input ()
{
	int i;
	char c;

	for (i = 0; (c = getchar()) != '\n'; ++i)
	{
		if (c >= 'a' && c <= 'z')
			c -= 32;
		input[i] = c;
	}
	len = i;
	for (i = 0; (c = getchar()) != '\n'; ++i)
	{
		if (c >= 'a' && c <= 'z')
			c -= 32;
		while (c != input[i] && i < len)
		{
			test[i] = BAD;
			++i;
		}
		test[i] = GOOD;
	}
	for (; i < len; ++i)
		test[i] = BAD;
	return 0;
}
/*----------------------- 处理结果,坏键只输出一次 -----------------------*/
int deal_result ()
{
	int i, j;
	char c;
	
	for (i = 0; i < len; ++i)
	{
		if (test[i] == BAD)
		{
			c = input[i];
			for (j = len-1; j > i; --j)	/* 并把后面相同的键也标记了, */
				if (input[j] == c)		/* 是后面出现的坏键 */
					test[j] = GOOD;		/* 标记该坏键是好的,因为只输出该坏键一次(i的位置是那一次)即可 */
		}

	}
	return 0;
}
/*---------------------------- 输出结果 -------------------------------*/
int print_result ()
{
	int i;
	
	for (i = 0; i < len; ++i)
		if (test[i] == BAD)
			putchar(input[i]);
	return 0;
}
int main ()
{
	read_input ();
	deal_result ();
	print_result ();
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值