PAT B 급 1024 C 언어

10994 단어 c 언어pat시험
1024 과학 계수 법 (20 점)
과학 계수 법 은 과학자 들 이 매우 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [±] [1 - 9] 를 만족 시 키 는 것 이다.현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 보류 하 며 끝의 0 을 포함 합 니 다.
사고의 방향
여기 서 3 가지 상황 으로 나 뉘 는데 첫 번 째 는 앞 에 0.0000 을 채 워 야 하 는 거 고, 두 번 째 는 소수점 을 몇 자리 뒤로 옮 기 는 거 고, 세 번 째 는 뒤에 0 을 더 해서 지수의 크기 를 판단 한 다음 에 어떤 형식 인지 확인 하고 바 꿔 야 하 는 거 예요.
#include
#include
int main()
{
    char a[10000];
    int c=0,E;
    scanf("%s",&a);
    E=strchr(a,'E')-a;//     a E         -a      
    for(int i=E+2;i<strlen(a);i++)
    {
        c=c*10+a[i]-'0';
    }
    if(a[0]=='-') printf("-");//         
    if(a[E+1]=='-')//         
    {
        printf("0.");//      
        for(int i=1;i<c;i++)
        {
            printf("0");//        0
        }
        for(int i=1;i<E;i++)
        {
            if(i!=2)
            printf("%c",a[i]);//           
        }
    }
    else if(c<(E-3))//               ,        
    {
        for(int i=1;i<E;i++)
        {
            if(a[i]!='.')
             printf("%c",a[i]);//          
            if(i==c+2) //        
             printf(".");
        }
    }
    else//              ,    0
    {
        for(int i=1;i<E;i++)
        {
            if(a[i]!='.')
             printf("%c",a[i]);
        }
        for(int i=0;i<c-E+3;i++)//       0
        {
            printf("0");
        }
    }
    return 0;
}

좋은 웹페이지 즐겨찾기