1.忘了C++字符串有个翻转函数reverse或者一开始就先写好翻转函数,就不会太乱
2.翻转了A、B从0开始计数要把对偶数奇数的处理反过来……
3.当B的长度小于A时,B必须要补零(话说这个是看了别人代码才知道,自己想不到
#include<cstdio>
#include<cstring>
const int max = 110;
char A[max], B[max], ans[max] = {0};
void reverse(char s[])
{
int len = strlen(s);
for(int i = 0; i < len / 2; i++)
{
int temp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = temp;
}
}
int main()
{
scanf("%s %s", A, B);
reverse(A);
reverse(B);
int lenA = strlen(A);
int lenB = strlen(B);
int len = lenA > lenB ? lenA : lenB;
for(int i = 0; i < len; i++)
{
int numA = i < lenA ? A[i] - '0' : 0; //短的字符串要补0
int numB = i < lenB ? B[i] - '0' : 0;
if(i % 2 == 0) //翻转后是第一位,要对应奇数处理
{
int temp = (numB + numA) % 13;
if(temp == 10)
ans[i] = 'J';
else if(temp == 11)
ans[i] = 'Q';
else if(temp == 12)
ans[i] = 'K';
else
ans[i] = temp + '0';
}
else
{
int temp = numB - numA;
if(temp < 0)
temp = temp + 10;
ans[i] = temp + '0';
}
}
reverse(ans);
puts(ans);
return 0;
}