1024. 科学计数法 (20)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()
{
    char str[10000];
    gets(str);
    int i,pos=0,exp=0;
    if(str[0] == '-') printf("-");
    for(i=1;i<strlen(str);i++){
        if(str[i] == 'E')
            break;
    }
    pos = i;
    for(i=pos+2;i<strlen(str);i++){
        exp = exp * 10 + str[i] - '0';
    }
    if(exp == '0'){
        for(i =1;i<pos;i++)
            printf("%c",str[i]);
    }
    else if(str[pos+1]=='-'){
        printf("0.");
        for(i=0;i<exp-1;i++){ //小数点向前移动exp-1位
            printf("0");
        }
        for(i=1;i<pos;i++)
            if(str[i]!='.') printf("%c",str[i]);
    }
    else if(str[pos+1]=='+'){
        for(i=1;i<pos;i++)
        {
            if(str[i]!='.') printf("%c",str[i]);
            if(i==exp+2&&exp+2<pos-1) printf(".");
        }
        for(i=0;i<exp+2-(pos-1);i++)  //exp+2表示所有数位,pos—1表示有数字的位数
            printf("0");
    }
    printf("\n");
    return 0;
}
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭