1048 数字加密 (20分)

一开始敲代码前俩个测试点总是没过去,参考这位PAT Basic 1048. 数字加密(20)(C语言实现)

代码如下

/*#include <stdio.h>
int main()
{
	char A[1000], B[1000], *pa, *pb, str[1000];
	int index = 0;
	pa = A; pb = B;
	scanf("%s %s", A, B);
	while(*(++pa)) ;
	while(*(++pb)) ;
	pa--; pb--;
	for(int i = 1; *pa && *pb; pa--, pb--, i++)
	{
	
		if(i % 2)
			{
				if((*pa - '0' + *pb - '0') % 13 == 10)
					str[index++] = 'J';
				else if((*pa - '0' + *pb - '0') % 13 == 11)
					str[index++] = 'Q';
				else if((*pa - '0' + *pb - '0') % 13 == 12)
					str[index++] = 'K';
				else
					str[index++] =  (*pa - '0' + *pb - '0') % 13 + '0';
			} 
		else
			str[index++] = (*pb - '0') - (*pa - '0') >= 0 ? (*pb - '0') - (*pa - '0') + '0' : (*pb - '0') - (*pa - '0') + 10 + '0';
	}
	while(*pa) str[index++] = *pa--;
	while(*pb) str[index++] = *pb--;
	for(--index;index >= 0; index--)
		putchar(str[index]);
	return 0;
 } */

#include <stdio.h>
#include <string.h>
int main()
{
	char A[1000], B[1000], str[] = "0123456789JQK";
	int alen, blen, max, a, b;
	scanf("%s %s", A, B);
	alen = strlen(A);
	blen = strlen(B);
	max = alen > blen ? alen : blen;
	for(int i = 0; i < max; i++)
	{
		a = alen + i - max < 0 ? 0 : A[alen + i - max] - '0';
		b = blen + i - max < 0 ? 0 : B[blen + i - max] - '0';
		if((max - i) % 2)
			putchar(str[(a + b) % 13]);
		else
			putchar('0' + (b - a < 0 ? b - a + 10 : b - a));
	}
	
	return 0;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼xxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值