我现在已经是才语言中的一员了,我在此献上今日的佳作——a-b(高精度),以下是我的程序及其注释,欢迎各位来观赏,耶!
程序:
#include
#include
char s1[1000];
int a[1000]={0},b[1000]={0},c[1000]={0};
int main()
{
int i,j,z,l1,l2,l,o;
freopen("hp-.in","r",stdin);
freopen("hp-.out","w",stdout);
scanf("%s",s1); --------------------------------------------//a
l1=strlen(s1);
for(i=0;i<=l1-1;i++) ------------------------------------- //把s1(被减数)转换成数字,并倒序存入a数组
a[l1-1-i]=s1[i]-'0';
scanf("%s",s1);
l2=strlen(s1);
for(i=0;i<=l2-1;i++) --------------------------------- //把s1(减数)转换成数字,并倒序存入b数组
b[l2-1-i]=s1[i]-'0';
if(l1==l2){
for(j=l1;j>=0;j--)
{
if(a[j]>b[j]) -----------------------------//a大
{
o=0;
break;
}
if(b[j]>a[j]) -----------------------------//b大
{
o=1;
break;
}
}
}
if(l1>l2||o==0) ---------------------------------------//a大时
{
l=l1;
for(i=0;i { if(a[i]
{ a[i]=a[i]+10; a[i+1]-=1; } c[i]=a[i]-b[i]; } while(l>1&&c[l-1]==0) l--;----------------------------------- //舍去高位中无用的0 for(i=l-1;i>=0;i--) ------------------------------------------//输出 { printf("%d",c[i]); } } else { printf("-"); l=l2; for(i=0;i { if(a[i]>b[i]) { b[i]=b[i]+10; b[i+1]-=1; } c[i]=b[i]-a[i]; } while(l>1&&c[l-1]==0) l--; ------------------------------------//舍去高位中无用的0 for(i=l-1;i>=0;i--)------------------------------------------- //输出 { printf("%d",c[i]); } } return 0; } 进过这一次的编写,我更加熟练的编写程序,我会向前更进一步!\(^o^)/O(∩_∩)O哈哈~( ^_^ )/~~拜拜