
现在是c++高精度减法了,主体程序差不多,但如果最后一位不够有问题怎么改 25
#include<iostream>#include<stdlib.h>#include<string.h>#include<bits/stdc++.h>usingnam...
#include <iostream>
#include<stdlib.h>
#include<string.h>
#include <bits/stdc++.h>
using namespace std ;
int main()
{
int x,y,jw,i,cd;
char a[255],b[255];
int aa[255],bb[255],cc[255];
cin>>a>>b;
for (i=0;i<=255;i++)
{aa[i]=-1;bb[i]=0;cc[i]=0;
}
x=strlen(a);
y=strlen(b);
for (i=0;i<=x-1;i++)
{ aa[x-i]=a[i]-48; }
for (i=0;i<=y-1;i++)
{ bb[y-i]=b[i]-48; }
jw=0; cd=1;
while (cd<=x||cd<=y)
{ if (aa[cd]>=bb[cd])
{cc[cd]=aa[cd]-bb[cd]; }
else if (aa[cd]!=-1)
{cc[cd]=aa[cd]-bb[cd]+10;
aa[cd+1]=aa[cd+1]-1;
}
cd++;
}
for (i=cd-1;i>=1;i--)
{cout<<cc[i];}
return 0;
}
现在还有个思路就是如果a<b则输出-(b-a) 可是a=b又没法输出 展开
#include<stdlib.h>
#include<string.h>
#include <bits/stdc++.h>
using namespace std ;
int main()
{
int x,y,jw,i,cd;
char a[255],b[255];
int aa[255],bb[255],cc[255];
cin>>a>>b;
for (i=0;i<=255;i++)
{aa[i]=-1;bb[i]=0;cc[i]=0;
}
x=strlen(a);
y=strlen(b);
for (i=0;i<=x-1;i++)
{ aa[x-i]=a[i]-48; }
for (i=0;i<=y-1;i++)
{ bb[y-i]=b[i]-48; }
jw=0; cd=1;
while (cd<=x||cd<=y)
{ if (aa[cd]>=bb[cd])
{cc[cd]=aa[cd]-bb[cd]; }
else if (aa[cd]!=-1)
{cc[cd]=aa[cd]-bb[cd]+10;
aa[cd+1]=aa[cd+1]-1;
}
cd++;
}
for (i=cd-1;i>=1;i--)
{cout<<cc[i];}
return 0;
}
现在还有个思路就是如果a<b则输出-(b-a) 可是a=b又没法输出 展开
1个回答
展开全部
我原来的代码,你参照着看看。
#include<cstdio>
#include<cstring>
char s[256],s1[256],s2[256];
int a[256],b[256],c[256];
int main()
{
int l1,l2,l;
scanf("%s",s1+1);
l1=strlen(s1+1);
scanf("%s",s2+1);
l2=strlen(s2+1);
if((l1<l2)||(l1==l2&&strcmp(s1+1,s2+1)<0))
{
strcpy(s+1,s1+1);strcpy(s1+1,s2+1);strcpy(s2+1,s+1);
l=l1;l1=l2;l2=l;
printf("-");
}
for(int i=1;i<=l1;i++)
a[i]=s1[l1-i+1]-48;
for(int i=1;i<=l2;i++)
b[i]=s2[l2-i+1]-48;
l=l1;
for(int i=1;i<=l;i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]=a[i]+10;
}
c[i]=a[i]-b[i]-c[i];
}
l++;
while(c[l]==0&&l!=1)
l--;
for(int i=l;i>=1;i--)
printf("%d",c[i]);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询