PTA basic 1024 科学计数法 (20 分) c语言实现(gcc)

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][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 "stdio.h"
#include "string.h"

int main(){
    char symbleI,symbleE,decimal[10002],integer;//整数符号,指数符号
    int  e,i;//整数 小数 指数的数值
    scanf("%c%c.%[^E]E%c%d",&symbleI,&integer,decimal,&symbleE,&e);
    if(symbleI=='-'){
        printf("-");
    }
    if(symbleE=='-'){
        printf("0.");
        e--;
        for(;e>0;e--)printf("0");
        printf("%d%s",integer-'0',decimal);
    }else{
        printf("%d",integer-'0');
        if(e<strlen(decimal)){
            for(i=0;i<strlen(decimal);i++){
                if(i==e){
                    printf(".");
                }
                printf("%c",decimal[i]);
            }
        }else{
            printf("%s",decimal);
            e=e-strlen(decimal);
            for(;e>0;e--)printf("0");
        }
    }
    return 0;
}

 

posted @ 2021-05-11 13:17  keiiha  阅读(276)  评论(0编辑  收藏  举报