请帮我摆脱垃圾值和附加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;
}
答案 0 :(得分:0)
从i=a-1; j=b-1;
而不是i=a,j=b
- chux
由于2个数字的差异可能是负数,建议先找出a
和b
中的较大者,然后从较小的数字中减去较小的数字,最后应用正确的符号。 - chux