PAT B 급 1024. 과학 계수 법 (C 언어)
6545 단어 PAT B 급
제목: 과학 계수 법 은 과학자 들 이 매우 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [+ -] [1 - 9] 을 만족 시 키 는 것 이다.현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.입력 형식: 각 입력 은 과학 계수 법 으로 표 시 된 실수 A 를 포함 합 니 다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.출력 형식: 모든 테스트 용례 에 대해 한 줄 에 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 비트 가 보 존 됩 니 다. 끝의 0 을 포함 합 니 다.입력 샘플 1: + 1.23400E - 03 출력 샘플 1: 0.001 23400 입력 샘플 2: - 1.2E + 10 출력 샘플 2: - 1200000000
제목 분석: 제목 의 규정 수 치 는 최대 9999 개의 바이트 일 수 있 지만 지수 절대 치 는 9999 를 초과 하지 않 는 다.문 제 는 모든 정 도 를 유지 해 야 하기 때문에 '문자열' 로 처리 해 야 합 니 다.
사고: / * 문자열 을 몇 부분 으로 나 눕 니 다. 기호, 정수, 소수, 지수 기호, 지 수 는 각각 * if (기호 '-') 출력 '-' / 출력 기호 * if (지 수 는 0) 직접 출력 정수, 소수 * else if (지수 기호 '+) * {....................................................................*.....................................................................................................................................(지수 기호 '-') * {*..... 출력 '0' *... 출력 (지수 - 1) 개 0 *.... 출력 정수, 소수 문자열 *} * /
코드 는 다음 과 같 습 니 다:
#include
#define SIZE 100000
#define TEST1
int main(void)
{
char sign;//
char integer;//
char frac[SIZE];//
char expSign;//
int exp;//
char ch;
sign = getchar();
integer = getchar();
getchar();//
int lenth = 0;
while((ch = getchar())!='E')
{
frac[lenth++] = ch;
}
expSign = getchar();
scanf("%d",&exp);
#ifndef TEST1
printf("%c%c.%sE%c%d
",sign,integer,frac,expSign,exp);
#endif
if(sign == '-') printf("-");
if(!exp)//
printf("%c.%s
",integer,frac);
else if(expSign == '+')
{
if(exp>=lenth)// >= , , ‘0’
{
printf("%c%s",integer,frac);
for(int i = 0;i < exp - lenth ;i++)
putchar('0');
putchar('
');
}
else
{
if(integer != '0') printf("%c",integer);
for(int i = 0;iprintf("%c",frac[i]);
if(i == exp-1)
putchar('.');
}
putchar('
');
}
}
else//expSign == '-'
{
printf("0.");
for(int i = 0; i < exp-1;i++)
putchar('0');
printf("%c%s
",integer,frac);
}
return 0;
}
소결 & & 군말: 이런 '논리 적 상감' 문 제 는 어렵 지 않 은 편 이다. 바로 '힘 든 일' 이다. 엄밀 해 야 한다. 그렇지 않 으 면 어떤 부분 에서 실 수 를 하기 쉽다. 그리고 논리 적 오류 이기 때문에 찾기 가 쉽 지 않 고 힘 들 것 이다. 그러나 나 는 다음 과 같은 절 차 를 따 르 면 이런 문 제 는 약간 '쉽다' 고 생각한다.... 1. 자신 이 무엇 을 하고 있 는 지 잊 지 마 세 요! 확실히 이런 문 제 는 가끔 자신 을 어 지 럽 히 기 쉽 습 니 다. 코드 를 두 드 리 면서 갑자기 자신 이 무엇 을 하고 있 는 지 잊 어 버 립 니 다...................................... (2) 주석 을 많이 써 서 자신 에 게 어디 까지 했 는 지 일 깨 워 준다. 2. '특수 상황' 을 먼저 처리한다. 이렇게 하면 한편 으로 는 특수 상황 을 무시 하기 쉽 지 않 고, 다른 한편 으로 는 다음 코드 를 적 게 처리 하 는 데 도 도움 을 줄 수 있다.(이 건 언제나 맞 는 것 같은 데...)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PAT B 1080 MOOC 기 말 성적 (C 언어)다음은 세 개의 입력 이 있 습 니 다.첫 번 째 블록 은 P 개의 온라인 프로 그래 밍 성적 G p 를 포함 합 니 다.두 번 째 는 M 개 중간고사 성적 G mid - term 를 포함한다.세 번 째 는 N 개의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.