1073 Scientific Notation (20)(20 分)

注意要比较E前有多少项和exp的大小

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string s;
int main()
{
    getline(cin, s);
    if (s[0] == '-')printf("-");
    int E, exp = 0, point = -1;
    for (int i = 0; i < s.length(); i++)
    {
        if (s[i] == 'E')
        {
            E = i;
        }
        if (s[i] == '.')point = i;
    }
    point == -1 ? E : point;
    int cnt = E - point - 1;
    if (cnt < 0)cnt = 0;
    for (int i = E + 2; i < s.length(); i++)exp = exp * 10 + s[i] - '0';
    if (s[E + 1] == '-')
    {
        printf("0.");
        for (int i = 1; i < exp; i++)printf("0");
        for (int i = 1; i < E; i++)
        {
            if (s[i] != '.')printf("%c", s[i]);
        }
    }
    else
    {
        if (cnt <= exp)
        {
            for (int i = 1; i < E; i++)
            {
                if (s[i] != '.')printf("%c", s[i]);
            }
            for (int i = 0; i < exp - cnt; i++)printf("0");
        }
        else
        {
            for (int i = 1; i <= point + exp; i++)if (s[i] != '.')printf("%c", s[i]);
            printf(".");
            for (int i = point + exp+1; i < E; i++)printf("%c", s[i]);
        }
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 再见了,2017,新年来了,你就要走了,再怎么舍不得也改变不了命运,2017我们会永远记住你的。 ...
    粉色繁花阅读 1,706评论 0 2
  • 1.凡是你抗拒的,都会持续: 故事:女子找钥匙,不在没灯,掉的地方找,而去亮的地方找;我们不知道自己想要什么,经常...
    木子Sophia_阅读 1,675评论 0 0
  • 我已许久不来这条路,想上次来时这梧桐树叶还是翠绿的,转眼却黄透了。 这是我来西南的第二年,在我想象中,西南应是绵软...
    耳朵啊阅读 1,531评论 0 1
  • 不知道从什么时候,“空虚”这个词语涵盖的大多是贬义的!可能由于网络用法上的曲解吧! 但是今天,真的很空虚,不知道因...
    OO碰到OO阅读 1,540评论 0 0

友情链接更多精彩内容