본문 바로가기

스터디/코딩

[ 코딩 도장 : C ] Unit 15. 나머지 연산하기 : 연습문제 / 심사문제

15.4 연습문제 : 3의 배수인지 확인하기

문제) 다음 소스 코드를 완성하여 0이 두 번 출력되게 만드세요(1은 사용하지 않아야 합니다).

#include <stdio.h>

int main()
{
    int num1 = 15;
    int num2 = 27;
    int num3 = 3;

    num1 %= num3;
    num2 %= num3;

    printf("%d\n", num1);
    printf("%d\n", num2);

    return 0;
}

.

 

15.5 심사문제 : 정수의 각 자릿수를 역순으로 출력하기

문제) 표준 입력으로 만 단위의 정수 하나가 입력됩니다. 입력된 정수의 각 자릿수를 역순으로 출력하는 프로그램을 만드세요(scanf 함수 전에 문자열을 출력하면 안 됩니다). 예를 들어 43561이라면 1 6 5 3 4를 출력하면 됩니다. 각 자릿수는 공백으로 띄우세요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>

// 나머지 %, 몫 /
int main()
{
    int num; //43561
    scanf("%d", &num);
    
    int num_1 = num / 10000; //4
    int num_11 = num % 10000; //3561

    int num_2 = num_11 / 1000; //3
    int num_22 = num_11 % 1000; //561
    
    int num_3 = num_22 / 100; //5
    int num_33 = num_22 % 100; //61
  
    int num_4 = num_33 / 10; //6
    int num_44 = num_33 % 10; //1


    printf("%d %d %d %d %d", num_44, num_4, num_3, num_2, num_1);
    
    return 0;
}

>> ㅎ...ㅎㅎ...진짜 멍청한 코딩...지렸다....좀 더 깔끔하고싶다라는 생각이 들어서 고민하면서 다른 사람들꺼를 참고하던 와중 아래와 같은 코드를 발견했다.

#include <stdio.h>

int main()
{
    int num1;
    
    scanf("%d", &num1);

    int a, b, c, d, e;

    e = num1 % 10;
    d = (num1 / 10) % 10;
    c = (num1 / 100) % 10;
    b = (num1 / 1000) % 10;
    a = (num1 / 10000) % 10;

    printf("%d %d %d %d %d", e, d, c, b, a);

    return 0;
}

출처 : https://jaeyooniverse.tistory.com/19

이래서....코딩은 많이 해보고 보아야한다는게 맞는 것같다....

나도 다시 코딩을 하며 저렇게 깔끔하게 할 수 있도록 노력해야할 것 같다.