求两数相减,a-b。超出9位运算不正确,求大佬告知。
#include<stdio.h>
int main(int argc,char *argv[])
{
int a[80]={0},b[80]={0},c[80]={0},i,k,max,s1=0,s2=0,t,ok=0;
for(i=0;i<80;i++)
{
scanf("%d",&a[i]);
s1++;
if(getchar()=='\n') break;}
for(i=0;i<80;i++)
{
scanf("%d",&b[i]);
s2++;
if(getchar()=='\n') break;}
max=s1;
if(s1<s2) max=s2;
for(i=0;i<max;i++){ if(a[i]==b[i]) continue; if(a[i]>b[i]){t=1; break;} if(a[i]<b[i]) {t=-1; break;}}//判断相减是否大于0
if(s1>s2||s1==s2&&t==1){
for(i=max-1,k=s2-1;i>=0;i--,k--)
{
if(k>=0){
c[i]+=a[i]-b[k]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
else{
c[i]+=a[i]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
}}
else{
for(i=max-1,k=s1-1;i>=0;i--,k--)
{
if(k>=0){
c[i]+=b[i]-a[k]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
else{
c[i]+=b[i]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
}}
if(s1<s2||s1==s2&&t==-1){ printf("-");}
for(i=0;c[i]==0;i++) {}//消除前面的0
for(i;i<max;i++)
{ ok=1; printf("%d",c[i]);}
if(ok==0)
printf("0");
return 0;
}