热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PAT1073ScientificNotation

作者:柳婼来源:CSDN原文:https:blog.csdn.netliuchuoarticledetails52121350参考这位大佬

作者:柳婼
来源:CSDN
原文:https://blog.csdn.net/liuchuo/article/details/52121350
参考这位大佬实现的&#xff0c;具体思路是用num保存E前面的字符串所对应的数字&#xff0c;exp保存E后面的字符串&#xff0c;不包括符号位。当exp<0时表示小数点向前移动&#xff0c;那么先输出0. 然后输出abs(exp)-1个0&#xff0c;然后继续输出num中的所有数字&#xff1b;当exp>0时候表示向后移动&#xff0c;那么先输出第一个字符&#xff0c;然后将num中尽可能输出n个字符&#xff0c;如果num已经输出到最后一个字符(j &#61;&#61; num.length())那么就在后面补exp-cnt个0&#xff0c;否则就补充一个小数点。 然后继续输出t剩余的没有输出的字符&#xff5e;




#include <iostream>
#include <string>
#include <cstring>using namespace std;int abs(int x)
{return x < 0 ? -x:x;
}int main()
{string str;while(cin >> str){int k &#61; str.find(&#39;E&#39;);string num &#61; str.substr(1, k-1); //num部分int exp &#61; stoi(str.substr(k&#43;1)); //exp部分if(str[0] &#61;&#61; &#39;-&#39;)cout << str[0];if(exp < 0) //在这种情况下首先直接输出0.{cout << "0.";for(int i &#61; 0; i < abs(exp)-1; i&#43;&#43;)cout << &#39;0&#39;;for(int i &#61; 0; i < num.size(); i&#43;&#43;)if(num[i] !&#61; &#39;.&#39;)cout << num[i];}else{cout << num[0];int i &#61; 2, cnt &#61; 0;for(; i < num.size() && cnt < exp; i&#43;&#43;, cnt&#43;&#43;)cout << num[i];//如果i&#61;&#61;num.size()说明num部分输出完毕&#xff0c;接下来输出exp-cnt个0即可if(i &#61;&#61; num.size())for(int j &#61; 0; j < exp-cnt; j&#43;&#43;)cout << &#39;0&#39;;else //也就是i {cout << &#39;.&#39;; //小数点的位置就是i前面的那个位置for(int j &#61; i; j < num.size(); j&#43;&#43;)cout << num[j];}}cout << endl;}return 0;
}

推荐阅读
author-avatar
嗒嗒爱臭臭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有