pat 乙级 1029. 旧键盘(20)



思路 : 

count思想 :  

先遍历 第一行 出现过 的 标记为 1  

遍历第二行输入  出现过的 标记为0

定义数组保存 count 为1 的   遍历输出即可 


注意 英文字母只输出大写 。


#include<stdio.h>
#include<string.h>

int main()
{
	char s1[82];
	char s2[82];
	char sout[82];
	scanf("%s %s",s1, s2);  
	int count[200] = {0};                                                //常用ASCII最大为127;
	for ( int i = 0; i < strlen(s1); i ++ ) {
	if ( s1[i] >= 97 ) {                //也可以把97换成'a';减去32实现大小写转换,小写字母的ASCII码大于小写字母的
	count[s1[i] - 32] = 1;     // 'k' - 'a' + 'A’= 'K',这样也能实现大小写转换
} else {
	count[s1[i]] = 1;
}
}

for ( int i = 0; i < strlen(s2); i ++ ) {
	if ( s2[i] >= 97 ) {
		count[s2[i] - 32] = 0;
	} else {
		count[s2[i]] = 0;
	}
}
int j = 0;
for ( int i = 0; i < strlen(s1); i ++ ) {
	if ( s1[i] >= 97 && count[s1[i] - 32] > 0 ) {              
		sout[j ++] = (char)(s1[i] - 32);
		count[s1[i] - 32] = 0;
	} else if (s1[i] < 97 && count[s1[i]] > 0) {
		sout[j ++] = s1[i];
		count[s1[i]]  = 0;
	}
}
for( int i = 0; i < j; i ++ ) {                         //切记,以后再遇到逐个拷贝得来的字符串,一定要这么输出
	printf("%c", sout[i]);
}
return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值