PAT 1024 과학 계수 법의 코드 구현 및 오류 분석 (C 언어)
과학 계수 법 은 과학자 들 이 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [+ -] [1 - 9] 을 만족 시 키 는 것 이다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하 며 끝의 0 을 포함 합 니 다.
입력 샘플 1:
+1.23400E-03
출력 예시 1:
0.00123400
입력 샘플 2:
-1.2E+10
출력 예시 2:
-12000000000
실현 사고: 문자 배열 로 데 이 터 를 저장 하고 관건 적 인 위 치 를 분류 분석 합 니 다.
1. 충분 한 긴 문자 배열 을 정의 하고 입력 데 이 터 를 저장 하 며 지수 크기 를 계산한다.
2. 첫 번 째 마이너스 번 호 는 그대로 출력 하고 나머지 구분 지 수 는 마이너스 이 며 0 또는 양수 두 가지 상황 으로 분류 출력 한다.
코드 는 다음 과 같 습 니 다:
#include
int main()
{
char a[10002]={0};
fgets(a,10002,stdin);//
int iBegin=0,iEnd=0;// ,
for(int i=0;i<20002;i++)
{
if(a[i]=='E')
{
iBegin=i+1;
}
if(a[i]=='
')
{
iEnd=i-1;
break;
}
}
int iE=0,iCnt=1,iWei=0;
// iE
for(int i=iEnd;i>iBegin;i--)
{
iE+=(a[i]-'0')*iCnt;
iCnt*=10;
}
if(a[0]=='-')
{
printf("-");
}
//
if(a[iBegin]=='-'&&iE!=0)
{
// 0
printf("0.");
for(int j=0;j
오류 분석:
테스트 포인트 2 와 3 은 처음부터 끝까지 통과 하지 못 한 후에 자세히 검 사 를 한 결과 지수 가 정시 에 소수점 출력 을 판단 하 는 데 오류 가 존재 한 다 는 것 을 발견 했다. 즉, 지수 가 앞의 작은 수 를 정수 로 바 꿀 때 마지막 숫자 후에 소수점 을 출력 하 는 문제 에 제한 조건 인 iWei 를 더 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.