如图所示,目前我用的例子测试输出都是正确的,求解什么例子会出现错误或者如何修改才可以通过测试点4和5,谢谢!
#include<stdio.h>
char A[100],B[100];
int max(int a,int b)
{
if (a>=b)
return a;
else
return b;
}
void zero_padding(int len_a,int len_b)//输入的规则就是len_a>len_b
{
int num_0,i;
if (len_a>len_b)//对B补零
{
num_0 = len_a-len_b;
for (i=len_b-1;i>=0;i--)
B[i+num_0] = B[i];
for (i=0;i<num_0;i++)
B[i] = '0';
}
else //对a补零
{
num_0 = len_b-len_a;
for (i=len_a-1;i>=0;i--)
A[i+num_0] = A[i];
for (i=0;i<num_0;i++)
A[i] = '0';
}
}
int main(){
int i,len,temp;
char a;
int lenA = 0;
int lenB = 0;
for (i=0;i<100;i++)
{
scanf("%c",&a);
if (a==' ')
break;
A[i] = a;
lenA++;
}
for (i=0;i<100;i++)
{
scanf("%c",&a);
if (a=='\n')
break;
B[i] = a;
lenB++;
}
if (lenA!=lenB)//长度不一致,高位补零操作
zero_padding(lenA,lenB);
len = max(lenA,lenB);
int odd_even;//如果等于1,则是奇数;0为偶数位
if (len%2==0)//判断第一位是什么位
odd_even = 0;
else
odd_even = 1;
for (i=0;i<len;i++)
{
if (odd_even==1)//奇数位
{
temp = (B[i]+A[i]-48*2)%13;
switch (temp){
case 10: temp = 'J'-48;break;
case 11: temp = 'Q'-48;break;
case 12: temp = 'K'-48;break;
default: break;//J 代表 10、Q 代表 11、K 代表 12
}
printf("%c",(temp+48));
odd_even = 0;
}
else
{
temp = B[i]-A[i];
if (temp<0)
temp += 10;
printf("%d",temp);
odd_even = 1;
}
}
return 0;
}