我自己试了很多数据感觉都没有错,但提交只有10分,其他都是wa
#include<stdio.h>
#include<string.h>
int* minus(int m[],int n[])
{
static int k[10100]={0};
int tmp=0;
k[0]=m[0];
int i=1;
for(i=1;i<=k[0];i++)
{
tmp=m[i]-n[i];
if(tmp>=0)
{
k[i]=tmp;
}
else
{
k[i]=tmp+10;
m[i+1]--;
}
}
while(k[0]>1&&k[k[0]]==0)
{
k[0]--;
}
return k;
}
int main()
{
char x[10100];//存入数据
gets(x);
fflush(stdin);
int a[10100]={0};
a[0]=strlen(x);
int len=a[0];
int n=0;
for(n=1;n<=len;n++)
{
a[n]=x[len-n]-'0';
}
char y[10100];
gets(y);
int b[10100]={0};
b[0]=strlen(y);
len=b[0];
for(n=1;n<=len;n++)
{
b[n]=y[len-n]-'0';
}
if(a[0]>b[0])
{
int* c=minus(a,b);
int i=0;
for(i=c[0];i>0;i--)
{
printf("%d",c[i]);
}
}
else if(a[0]<b[0])
{
int* c=minus(b,a);
printf("-");
int i=0;
for(i=c[0];i>0;i--)
{
printf("%d",c[i]);
}
}
else if(strcmp(x,y)>=0)
{
int* c=minus(a,b);
int i=0;
for(i=c[0];i>0;i--)
{
printf("%d",c[i]);
}
}
else if(strcmp(x,y)<0)
{
int* c=minus(b,a);
printf("-");
int i=0;
for(i=c[0];i>0;i--)
{
printf("%d",c[i]);
}
}
return 0;
}