zoukankan      html  css  js  c++  java
  • 1024. 科学计数法 (20)

    1024. 科学计数法 (20)
    
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
    
    现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
    
    输入格式:
    
    每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
    
    输出格式:
    
    对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
    
    输入样例1:
    +1.23400E-03
    输出样例1:
    0.00123400
    输入样例2:
    -1.2E+10
    输出样例2:
    -12000000000
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    #include <cstdio>
    using namespace std;
    
    int main()
    {
        string str;
        cin>>str;
        int dian=str.find('.');
        str.erase(dian,1);
        int pos_e=str.find('E');
        int sign1;
        if(str[0]=='+')
        {
            sign1=1;
        }
        else if(str[0]=='-')
        {
            sign1=-1;
        }
        string a=str.substr(1,pos_e-1);
        int e=atoi(&str[pos_e+1]);
        if(sign1<0)
        {
            printf("-");
        }
        //指数小于0
        if(e<0)
        {
            e=abs(e);
            e-=1;
            printf("0.");
            while(e!=0)
            {
                printf("0");
                e--;
            }
            printf("%s
    ",a.c_str());
        }
        else if(e==0)
        {
            a.insert(1,".");
            printf("%s
    ",a.c_str());
        }
        else//指数大于0
        {
            if(e>a.length()-1)
            {
                e-=a.length()-1;
                printf("%s", a.c_str());
                while(e--)
                {
                    printf("0");
                }
                printf("
    ");
            }
            else if(e==a.length()-1)
            {
                cout<<a<<endl;
            }
            else
            {
                a.insert(e+1,".");
                cout<<a<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    《Effective C++》笔记
    《C++ Qt 编程视频教程》
    Windows下802.11抓包
    springcloud01_ribbon使用及原理
    springboot04_springboot特性之Actuator
    springboot04_手写实现starter实现
    linux操作01_redis服务器安装
    springboot03_核心特性及设计思想
    springboot重新认识
    springboot01_微服务架构的现状及未来【上】
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/6370723.html
Copyright © 2011-2022 走看看