2016/7/6 高精准计算器-减(神·高精准)

咳咳,我于心不忍,so,我又来写了。。。。。。

源码:

#include<stdio.h>
#include<string.h>
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); 
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<l;i++)
{
if(a[i]<b[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<l;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;
}

           来自小组:

         成都七中高新校区OI2015信息竞赛       冰杖

http://www.cnblogs.com/chentao1c/             ——冰杖

 

原文地址:https://www.cnblogs.com/wuweihehe/p/5648077.html