请帮助摆脱减法计算器得到的额外0

时间:2014-12-15 22:17:15

标签: c

请帮我摆脱垃圾值和附加0,结果我从c中的这个大整数计算器得到。 (这里的数字被视为字符串,因为我必须使用非常大的数字,而整数数据类型不能保存。)

#include <stdio.h>
#include <string.h>

int main()
{
char v1[500],v2[500],result[500];
int i,j,k;
int a,b,c,x=0,y=0;
int p,q,r;
int elem=0, sum=0;

printf(" Please Enter 1st number: ");
gets(v1);
printf(" Please Enter 2nd number: ");
gets(v2);

a =strlen(v1);
b =strlen(v2);

for(i=a,j=b;i>=0||j>=0;i--,j--)
{
    if(i>=0)
    {
        x = v1[i]-48;
    }

    else
    {
        x = 0;
    }

    if(j>=0)
    {
        y = v2[j]-48;
    }

    else
    {
        y = 0;
    }

    sum=x-y;

    if(sum<0)
    {
        sum =sum+10;
        p = v1[i-1]- 48;
        q = p-1;
        v1[(i-1)]= q + 48;
    }

    sum= sum + 48;

    if(a>=b)
    {
        result[i]=sum;
    }

    if(b>a)
    {
        result[j]=sum;
    }

}


printf("\n\n    Subtraction Is: ");

for(k=0;result[k];k++)
{

    printf("%c",result[k]);
}



printf("\n\n\n\n\n\n\n");
return 0;
}

1 个答案:

答案 0 :(得分:0)

i=a-1; j=b-1;而不是i=a,j=b - chux

开始

由于2个数字的差异可能是负数,建议先找出ab中的较大者,然后从较小的数字中减去较小的数字,最后应用正确的符号。 - chux