PKUKY150 浮点数加法

📅 发布时间:2026/7/17 16:37:49 👁️ 浏览次数:
PKUKY150 浮点数加法
PKUKY150 浮点数加法⭐️难度简单⭐️类型字符串基础数学题目题目链接题解#includestdio.h#includeiostream#includestringusingnamespacestd;stringGetInteger(string a){returna.substr(0,a.find(.));}stringGetFraction(string a){returna.substr(a.find(.)1,a.size()-a.find(.));}// 使用引用参数 返回信息voidFractionPlus(stringres,intcarry,string fa,string fb){intsizemax(fa.size(),fb.size());while(fa.size()size){fa.push_back(0);}while(fb.size()size){fb.push_back(0);}res.resize(size);//给res申请内存空间carry0;for(intisize-1;i0;--i){// 0 0// 3 0 3if(fa[i]fb[i]carry-09){res[i]fa[i]fb[i]carry-0-10;carry1;}else{res[i]fa[i]fb[i]carry-0;carry0;}}return;}voidIntegerPlus(stringres,intcarry,string ia,string ib){res.clear();for(intiia.size()-1,jib.size()-1;i0||j0||carry1;--i,--j){if(i0j0){if(ia[i]ib[j]carry-09){res.insert(res.begin(),ia[i]ib[j]carry-0-10);carry1;}else{res.insert(res.begin(),ia[i]ib[j]carry-0);carry0;}}elseif(i0j0){if(ia[i]carry9){res.insert(res.begin(),ia[i]carry-10);carry1;}else{res.insert(res.begin(),ia[i]carry);carry0;}}elseif(i0j0){if(ib[j]carry9){res.insert(res.begin(),ib[j]carry-10);carry1;}else{res.insert(res.begin(),ib[j]carry);carry0;}}else{res.insert(res.begin(),1);carry0;}}return;}intmain(){//string a 12345.6789; // 11//string b 333.33333; // 99chararra[1000]{0};chararrb[1000]{0};while(scanf(%s%s,arra,arrb)!EOF){string aarra;string barrb;string iaGetInteger(a);string ibGetInteger(b);string faGetFraction(a);string fbGetFraction(b);string fres;intcarry;FractionPlus(fres,carry,fa,fb);string ires;IntegerPlus(ires,carry,ia,ib);printf(%s.%s\n,ires.c_str(),fres.c_str());}return0;}