1024 과학 계수 법 (20) (20 점)

11558 단어 PAT 와 GPLT문자열
1024 과학 계수 법 (20) (20 점) 과학 계수 법 은 과학자 들 이 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [±] [1 - 9] "를 만족 시 키 는 것 이다." [0 - 9] + E [±] [0 - 9] +, 즉 숫자의 정수 부분 은 1 자리 에 불과 하고 소수 부분 은 적어도 1 자리 가 있 으 며 이 숫자 와 그 지수 부분의 양음 호 는 양수 에 대해 서도 반드시 명확 하 게 제시 해 야 한다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하 며 끝의 0 을 포함 합 니 다.
입력 샘플 1:
+ 1.23400 E - 03 출력 사례 1:
0.00123400 입력 샘플 2:
- 1.2E + 10 출력 샘플 2:
- 1200000001024 과학 계수 법 (20) (20 점) 과학 계수 법 은 과학자 들 이 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [±] [1 - 9] "," [0 - 9] + E [±] [0 - 9] +, 즉 숫자의 정수 부분 은 1 자리 에 불과 하고 소수 부분 은 적어도 1 자리 가 있 으 며 이 숫자 와 그 지수 부분의 양음 호 는 양수 에 대해 서도 반드시 명확 하 게 제시 해 야 한다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하 며 끝의 0 을 포함 합 니 다.
입력 샘플 1:
+ 1.23400 E - 03 출력 사례 1:
0.00123400 입력 샘플 2:
- 1.2E + 10 출력 샘플 2:
-12000000000
#include
using namespace std;
int main()
{
    string str;
    cin>>str;
    int len = str.size();
    if(str[0]=='-') printf("-");
    int pos = 0;
    while(str[pos]!='E'){
        pos++;
    }
    int exp = 0;
    for(int i=pos+2;i<len;i++){
        exp=exp*10+(str[i]-'0');
    }
    if(exp==0){
        for(int i=1;i<pos;i++){
            printf("%c",str[i]);
        }
    }
    if(str[pos+1]=='-'){
        printf("0.");
        for(int i=0;i<exp-1;i++){
            printf("0");
        }
        printf("%c",str[1]);
        for(int i=3;i<pos;i++){
            printf("%c",str[i]);
        }
    }
    else
    {
        for(int i=1;i<pos;i++){
            if(str[i]=='.') continue;
            printf("%c",str[i]);
            if(i==exp+2&&pos-3!=exp){
                printf(".");
            }
        }
        for(int i=0;i<exp-(pos-3);i++){
            printf("0");
        }
    }
    return 0;
}

좋은 웹페이지 즐겨찾기