解题思路:

注意事项:

参考代码:

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
    string a,b;
    cin >>a>>b;
    int alen=a.length(),blen=b.length(),aplen=0,bplen=0;  //aplen 小数点前的位数.
    int i,j,aflag=0,bflag=0,ka=0,kb=0;       //ka,kb 小数点后的位数。
    for(i=0;i<alen;i++){
        if(a[i]=='.')
            aflag=1;
        if(a[i]!='.'&&aflag==0)
            aplen++;
        if(aflag==1)
            ka++;
    }
    if(ka>1)
    ka--;
    for(i=0;i<blen;i++){
        if(b[i]=='.')
            bflag=1;
        if(b[i]!='.'&&bflag==0)
            bplen++;
        if(bflag==1)
        kb++;
    }
    if(kb>1)
    kb--;
    if(aplen>bplen){
        for(i=0;i<aplen-bplen;i++)
            b="0"+b;
    }
    else{
        for(i=0;i<bplen-aplen;i++)
            a="0"+a;
    }
    if(ka>kb){
        if(kb==0)      
        b+=".";
        for(i=0;i<ka-kb;i++)
        b+="0";
    }
    else{
        if(ka==0)
        a+=".";
        for(i=0;i<kb-ka;i++)
        a+="0";
    }
    int len=a.length();
    int plen=aplen>bplen?aplen:bplen;     //小数点前 的位数。
    int k=ka>kb?ka:kb;                //小数点后的位数。
    int s[k+1];
    memset(s,0,sizeof(s));
    int w=0;
    for(i=len-1;i>plen;i--,w++){
        s[w]+=(a[i]-'0')+(b[i]-'0');
        if(s[w]>9){
            s[w+1]++;
            s[w]-=10;    
        }
    }
    if(s[w]==0)
    w--;
    int sflag=0;
    
    if(s[k]==0)
        sflag=0;
    else
        sflag=1;
    
    int ss[plen+1];
    memset(ss,0,sizeof(ss));
    int ww=0;
    if(sflag==1)
    ss[ww]+=1;
    
    
    for(i=len-k-2;i>=0;i--,ww++){
        ss[ww]+=(a[i]-'0')+(b[i]-'0');
        if(ss[ww]>9){
            ss[ww+1]++;
            ss[ww]-=10;
        }
    }
    if(ss[ww]==0)
    ww--;
    for(i=ww;i>=0;i--)
    cout <<ss[i];
    if(aflag||bflag)
    cout <<".";
    for(i=k-1;i>=0;i--)
    cout <<s[i];
    return 0;
}

点赞(2)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论