본문 바로가기

PS/CodeUp

[C++] CodeUp (코드업) 1025 : [기초-입출력] 정수 1개 입력받아 나누어 출력하기

문제

[기초-입출력] 정수 1개 입력받아 나누어 출력하기(설명) (codeup.kr)

 

[기초-입출력] 정수 1개 입력받아 나누어 출력하기(설명)

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr

 

코드 1
#include <stdio.h>

int main() {
    int a, b, c, d, e;
    scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);

    printf("[%d]\n", a * 10000);
    printf("[%d]\n", b * 1000);
    printf("[%d]\n", c * 100);
    printf("[%d]\n", d * 10);
    printf("[%d]", e);
    return 0;
}

 

설명

scanf 함수에서 %1d를 사용하면 한 자리 정수만을 입력받을 수 있다.

 

코드 2
#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;

    for (int i = 0; i < 5; i++) {
        cout << '[' << s[i];
        for (int j = 0; j < 4 - i; j++) cout << 0;
        cout << "]\n";
    }
    return 0;
}

 

설명

출력에 하드코딩이 아닌 반복문을 사용했다는 점 외에 특별한 점은 없다.

원래는 pow 함수를 이용해 s[i] * pow(10, 4-i) 같은 식으로 구현하려 했으나
반환 자료형이 double인 pow 함수 특성상 오차가 발생하여 문제가 생겼다.