C语言带小数点加法,已经晕了@-@带小数点的高精度加法,跪求指证

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

int max(int a,int b){

int m;

if(a>=b)m=a;

if(a

return m;

}

int main()

{

int a[100]={0},b[100]={0};

int i,j,k,ka,kb,pa1=0,pb1=0,la,lb;

char a1[100],b1[100];

gets(a1);

gets(b1);

ka=strlen(a1);

kb=strlen(b1);

for(i=0;i

if(a1[i]=='.')pa1=i;

}

for(i=0;i

if(b1[i]=='.')pb1=i;

}

la=ka-pa1-1;

lb=kb-pb1-1;

for(i=0;i

a[i]=a1[i]-'0';

for(i=0;i

b[i]=b1[i]-'0';

int c[100]={0};

if(pa1!=0||pb1!=0){

c[max(la,lb)]='.';

if(la>=lb){

j=0;

i=pb1+la;

for(k=ka-1;k>pa1;k--){

c[j]=b[i]+a[k]+c[j];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

i--;

j++;

}

}

else{

j=0;

k=pa1+lb;

for(i=kb-1;i>pb1;i--){

c[j]=b[i]+a[k]+c[j];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

k--;

j++;

}

}

k=pa1-1;

i=pb1-1;

for(j=max(la,lb)+1;j

if(i<0&&k>=0){

c[j]=a[k]+c[j];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

k--;

}

if(i>=0&&k<0){

c[j]=b[i]+c[j];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

i--;

}

if(i>=0&&k>=0){

c[j]=b[i]+a[k]+c[j];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

i--;

k--;

}

if(i<0&&k<0)break;

}

}

else{

k=ka-1;

i=kb-1;

for(j=0;j

if(i<0&&k>=0){

c[j]=c[j]+a[k];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

k--;

}

if(k<0&&i>=0){

c[j]=c[j]+b[i];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

i--;

}

if(i<0&&k<0)break;

if(i>=0&&k>=0){

c[j]=c[j]+a[k]+b[i];

c[j+1]=c[j+1]+c[j]/10;

c[j]=c[j]%10;

i--;

k--;

}

}

}

char d[100]={0};

k=0;

if(c[j]=0){

for(i=j-1;i>=0;i--){

d[k]=c[i];

k++;

}

}

else{

for(i=j;i>=0;i--){

d[k]=c[i];

k++;

}

}

puts(d);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值