PAT 1024. 科学计数法 (20)

1024. 科学计数法 (20)

时间限制

100 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

HOU, Qiming

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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
/* 学了几个C++处理字符串的常用函数
   1. strtok 分割字符串
   2. atof() 将字符串转化为数值
*/
#include "iostream"
#include "vector"
#include <string.h>
using namespace std;
int main()
{
    int len;
    vector<char*>v;
    char str[20005];
    char *p;
    cin >> str;
    p = strtok(str,"E"); /* 将字符串按E分割 */
    while (p != NULL) {
        v.push_back(p);
        p = strtok(NULL, "E");
    }
    len = strlen(v[0]); /* 记录v[0]的长度 */
    int offset = atof(v[1]); /* 记录小数点要偏移的位数 */
    if (v[0][0] == ‘-‘) /* 第一个元素为负号 输出*/
        cout << "-";
    if (offset == 0) {
        cout << v[0];
    }
    else if (offset < 0) { /* 指数为负数 */
        for (int i = 0; i < -offset; i++)
        {
            if (i == 0)
                cout << "0.";
            else
                cout << "0";
        }
        for (int i = 1; i < len; i++) {
            if (v[0][i] == ‘.‘)
                continue;
            else
                cout << v[0][i];
        }
    }
    else {  /* 指数为正数 */
        int k=0;
            for (int i = 1; i < len; i++) { /* 改变小数点的位置 */
            if(v[0][i]!=‘.‘){
                cout << v[0][i];
                k++;
            }
            if ((k - 1 == offset) && (k != len -2)) {
                cout << ".";
            }
            }
            /* 输出需要添加的零 */
            while (k <= offset) {
                cout << "0";
                k++;
            }
    }
    cout << endl;
}
				
时间: 2024-10-07 08:29:53

PAT 1024. 科学计数法 (20)的相关文章

PAT乙级 1024. 科学计数法 (20)

1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位

PAT-乙级-1024. 科学计数法 (20)

1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位

1024 科学计数法 (20)(20 分)

1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留. 输入格式: 每个输入包含1个测试用例,即一个以科学计数法表示的实数A.该数字的存储长度不超过9999字节,且其指数的

PAT乙级—1024. 科学计数法 (20)-native

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留. 输入格式: 每个输入包含1个测试用例,即一个以科学计数法表示的实数A.该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999. 输出格式: 对每个测

PAT——1024. 科学计数法

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留. 输入格式: 每个输入包含1个测试用例,即一个以科学计数法表示的实数A.该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999. 输出格式: 对每个测

PAT 1024 科学计数法 段错误

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留. 输入格式: 每个输入包含1个测试用例,即一个以科学计数法表示的实数A.该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999. 输出格式: 对每个测

1024. 科学计数法 (20)

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留. 输入格式: 每个输入包含1个测试用例,即一个以科学计数法表示的实数A.该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999. 输出格式: 对每个测

PAT 1024 科学计数法 (字符串)

不用纠结怎么把输入串变成结果串,一部分一部分输出即可.(时间不够写一部分是一部分,+的情况10分-的情况6分,还漏了4分有空来讨论一下) 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=10010; 4 int main(){ 5 char a[maxn]; 6 scanf("%s",a); 7 if(a[0]=='-') printf("-"); 8 int len=s

P 1024 科学计数法

转跳点:?? 1024 科学计数法 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出. 现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留. 输入格式: 每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A.该数字的存储长度不超过 9999 字节,且其指数