码迷,mamicode.com
首页 > 其他好文 > 详细

PAT 乙级真题 1014.科学计数法

时间:2020-01-22 21:46:22      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:保留   一个   pre   科学家   绝对值   算法   algorithm   +=   text   

PAT 乙级真题 1014.科学计数法

题目描述

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分
只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。

现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。

输入格式

每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。

输出格式

对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。

输入样例

+1.23400E-03

输出样例

0.00123400

题目思路

暴力算法,E后为负数时输出时往前面补0,E后为正数时,将字符数组向后移位处理。

#include<iostream>
#include<algorithm>
using namespace std;

const int N = 1e4 + 10;
char a[N], b[N];

int main()
{
    scanf("%s", a);
    if (a[0] == '-')printf("-");
    int i = 1, seed = 0, m = 0;
    while (a[i] != 'E')
    {
        b[i - 1] = a[i];
        i++;
    }
    int len = i - 2;
    if (a[++i] == '+')
        seed = 1;
    m += a[++i] - 48;
    while (a[++i])
    {
        m *= 10;
        m += a[i] - 48;
    }
    i = 0;
    while (b[i++] != '.');
    int j = i - 1;
    if (seed)
    {
        while (j < i + m - 1) {
            b[j] = b[j + 1];
            j++;
        }
        b[i + m - 1] = '.';
        i = i + m - 1;
        m = i;
        for (; i >= 0; --i)
        {
            if (b[i] == '\0')b[i] = '0';
        }
        if (m - 1 > len)
        {
            b[m] = '\0';
        }
        else
        {
            for (j = m; j < len + 1; j++)
            {
                if(b[j]=='\0')
                    b[j] = '0';
            }
            b[j] = '\0';
        }
        printf("%s", b);
    }
    else
    {
        swap(b[0], b[1]);
        if (m == 1)
        {
            printf("0%s", b);
        }
        else
        {
            printf("0.");
            for (i = 1; i < m; i++)printf("0");
            printf("%s", b+1);
        }
    }
    return 0;
}

PAT 乙级真题 1014.科学计数法

标签:保留   一个   pre   科学家   绝对值   算法   algorithm   +=   text   

原文地址:https://www.cnblogs.com/fsh001/p/12229529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!