PAT 甲级 A1073 (2019/02/10)

#include<cstdio>
#include<cstring>
int main(){
    char Array[10010];
    scanf("%s",Array);
    int i = 0, pos, cnt, length = strlen(Array);
    while(Array[i++] != 'E');
    pos = i - 1;
    cnt = i + 1;
    if(Array[0] == '-')
        printf("-");    
    if(Array[i] == '-'){
        printf("0.");
        if(Array[cnt] == '0'){
            for(int j = cnt; j < length; j++){
                if(Array[j] != '0'){
                    for(int k = 0; k < Array[j] - '0' - 1; k++)
                        printf("0");
                }
            }
        }
        else{
            for(int j = 0; j < (Array[cnt]-'0') *10+(Array[cnt + 1] - '0') - 1; j++)
                printf("0"); 
        }
        for(int i = 1; i < pos; i++){
            if(Array[i] == '.'){
                continue;
            }
            printf("%c",Array[i]);
        }   
    }
    else{
        int flag = 0;
        if(Array[cnt] == '0'){
            for(int j = cnt; j < length; j++){
                if(Array[j] == '0'){
                    continue;
                }
                flag = Array[j] - '0';  
            }
        }
        else{
            for(int q = cnt; q < length; q++){
                flag = flag*10 + Array[q] - '0';
            }   
        }
        int start = 0;
        for(int k = 1; k < pos; k++){
            if(Array[k] == '.'){
                continue;
            }
            printf("%c",Array[k]);
            start++;
            if(start-1 == flag && Array[k+1] != 'E'){
                printf(".");
            }
        } 
        if(flag > start){
            for(int j = 0; j < (Array[cnt]-'0')*10+(Array[cnt + 1] - '0') - 1; j++)
                printf("0");
        }
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/zjsaipplp/p/10425267.html