以20进制相加
注意两个操作数长度不一定相同
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int op1[100];
int op2[100];
char result[102];
char str[101];
int carriage;
int i,len1,len2,a,b,sum,j,k;
while(scanf("%s",str)!=EOF)
{ len1 = strlen(str);
for(i = 0;i<len1;i++)
if(str[i]>='a'&&str[i]<='j') op1[i] = str[i] -'a' + 10;
else op1[i] = str[i] - '0';
scanf("%s",str);
len2 = strlen(str);
for(i = 0;i<len2;i++)
if(str[i]>='a'&&str[i]<='j') op2[i] = str[i] -'a' + 10;
else op2[i] = str[i] - '0';
for(i = len1 - 1,j = len2 -1,carriage = 0,k = 0; i>=0||j>=0;i--,j--,k++)
{
if(i < 0 ) sum = op2[j] + carriage;
else if(j<0) sum = op1[i]+ carriage;
else
sum = op1[i] + op2[j] + carriage;
carriage = sum / 20;
sum = sum % 20;
if(sum >= 10) result[k] = sum -10 + 'a';
else result[k] = sum + '0';
}
if(carriage) {
if(carriage >= 10) result[k++] = carriage - 10 +'a';
else if(carriage) result[k++] = carriage +'0';
}
for(i = k-1;i>=0;i--)
putchar(result[i]);
printf("\n");
}
return 0;
}