1,和加法差不多,注意借位就成。
2,怎么消去前面的0?这个值得注意..其实很简答的。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define size 200
int main()
{
int num1[size],num2[size],m;
char s1[size],s2[size];
int n,i,k=0,a=0,b=0,len1,len2,maxlen;
scanf("%d", &n);
while(n--)
{
scanf("%s%s", s1, s2);
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
len1 = strlen(s1);
len2 = strlen(s2);
if (len1 < len2)
{
break;
}
else
{
k = 0;
for (i=len1-1; i>=0; i--)
{
num1[k++] = s1[i] - '0';
}
k = 0;
for (i=len2-1; i>=0; i--)
{
num2[k++] = s2[i] - '0';
}
maxlen = len1 > len2 ? len1 : len2;
for (i=0; i<maxlen; i++)
{
num1[i] -= num2[i];
if (num1[i] < 0) //减法借位
{
num1[i] = 10 + num1[i];
num1[i+1] = num1[i+1] - 1;
}
}
m = maxlen;
while (!num1[m]) //m消掉0
{
m--;
}
for(i=m; i>=0; i--)
{
printf("%d",num1[i]);
}
m = 0;
if (n)
{
printf("\n");
}
}
}
system("pause");
return 0;
}