加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

hdu1753(大数)

发布时间:2020-12-14 04:11:23 所属栏目:大数据 来源:网络整理
导读:#includestdio.h #includestring.h int main() { ??? char a[500],b[500]; ??? int i,tb,ta; ??? while(scanf("%s %s",a,b)==2)//输入两个数 ??? { ??????? ta=strlen(a); ??????? for(i=0;istrlen(a);i++)//找出小数点的位置 ??????? if(a[i]=='.') ???????

#include<stdio.h>
#include<string.h>
int main()
{
??? char a[500],b[500];
??? int i,tb,ta;
??? while(scanf("%s %s",a,b)==2)//输入两个数
??? {
??????? ta=strlen(a);
??????? for(i=0;i<strlen(a);i++)//找出小数点的位置
??????? if(a[i]=='.')
??????? {
??????????? ta=i;break;
??????? }

??????? tb=strlen(b);
??????? for(i=0;i<strlen(b);i++)
??????? if(b[i]=='.')
??????? {
??????????? tb=i;break;
??????? }

??????? int ia=ta+1,ib=tb+1,zhs[500],xs[500],c,j,e;
??????? memset(xs,sizeof(xs));//表示小数点后的数字
??????? memset(zhs,sizeof(zhs));//表示整数
??????? ta--;tb--;
??????? i=j=0;
??????? while(1)//计算整数的和
??????? {
??????????? if(ta>=0)
??????????? {zhs[i]+=a[ta]-'0';ta--;}
??????????? if(tb>=0)
??????????? {zhs[i]+=b[tb]-'0';tb--;}
??????????? i++;???????? //i表示整数位的长度

??????????? if(ta<0&&tb<0)
??????????? break;
??????? }
???????? while(1)//计算出小数点的数之和
??????? {
??????????? if(ia<strlen(a))
??????????? {xs[j]+=a[ia]-'0';ia++;}
??????????? if(ib<strlen(b))
??????????? {xs[j]+=b[ib]-'0';ib++;}
??????????? j++;???????? //j表示小数点后数的长度

??????????? if(ia>=strlen(a)&&ib>=strlen(b))
??????????? break;
??????? }

??????? c=0;
??????? for(e=j-1;e>=0;e--)//开始进位
??????? {
??????????? xs[e]+=c;
??????????? c=xs[e]/10;
??????????? xs[e]%=10;
??????? }
??????? for(e=0;e<i;e++)
??????? {
??????????? zhs[e]+=c;
??????????? c=zhs[e]/10;
??????????? zhs[e]%=10;
??????? }
??????? if(c)
??????? {
??????????? zhs[e]+=c;i++;
??????? }
??????? for(e=j-1;e>=0;e--)//去掉无意义的零
??????? if(xs[e])
??????? break;
??????? else
??????? j--;
??????? for(e=i-1;e>=0;e--)
??????? if(zhs[e])
??????? break;
??????? else
??????? i--;

??????? for(e=i-1;e>=0;e--)//输出两数字的和
??????? printf("%d",zhs[e]);

??????? if(j>0)???????? //如果小数点后有数字则输出小数点
??????? printf(".");

??????? for(e=0;e<j;e++)
??????? printf("%d",xs[e]);

??????? if(j<=0&&i<=0)//当两个数都为零时上面的不会输出,则输出零
??????? printf("0");

??????? printf("n"); ??? } ??? return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读