已知应该使用int数组,先将字符串传入int数组,运算后再根据int数组输出字符串。
下面是16进制的加法
#include <stdio.h>
#define LEN 100
#define TODEC(x) ((x) >= 'A' ? (x) - 'A' + 10 : (x) - '0')
char a[LEN] = {0}, b[LEN] = {0}, c[LEN] = {0};
int lena, lenb;
char *add()
{
int la = lena, lb = lenb, lc;
int i, t;
i = lc = la > lb ? la + 1 : lb + 1;
while (la >= 0 && lb >= 0)
{
c[i] += TODEC(a[la]) + TODEC(b[lb]);
if (c[i] >= 16)
{
c[i - 1] += 1;
c[i] -= 16;
}
if (c[i] > 9)
c[i] = c[i] - 10 + 'A';
else
c[i] += '0';
la--, lb--, i--;
}
while (la >= 0)
{
c[i--] = a[la--];
}
while (lb >= 0)
{
c[i--] = b[lb--];
}
if (c[0] == 0)
{
int j;
for (j = 0; j <= lc; j++)
c[j] = c[j + 1];
}
return c;
}
int main()
{
fgets(a, LEN, stdin);
fgets(b, LEN, stdin);
lena = strlen(a) - 2;
lenb = strlen(b) - 2;
printf("%s\n", add());
return 0;
}