코딩일기/자격증

[정보처리기사] 정수를 역순으로 출력하는 C언어 프로그램 : 2022년도 기출문제

jhy_2023 2024. 7. 16. 23:20
728x90
반응형

 

1. 다음은 정수를 역순으로 출력하는 C언어 프로그램이다.
예를들어 1234의 역순은 4321이다. 단, 1230처럼 0으로 끝나는 정수는 고려하지 않는다.
프로그램을 분석하여 괄호(1~3) 안에 들어갈 알맞은 연산자를 쓰시오

#include <stdio.h>

int main() {

        int number = 1234;
        int divider = 10;
        int result = 0;
        
        while (number (①) 0) { // (1)정답 :  >
                result = result * divider;
                result = result + number (②) divider; // (2)정답 :  %
                number = number (③) divider; // (3)정답 :  /
        }

        printf("%d", result);

        return 0;
}

변수 선언

 

  • number: 역순으로 변환할 정수입니다. 예시에서는 1234입니다.
  • divider: 각 자리수를 분리하기 위해 사용되는 값으로 10으로 초기화되어 있습니다.
  • result: 역순으로 변환된 결과를 저장할 변수입니다.
728x90

 


각 단계 설명

  1. 루프 조건: number > 0
    • number가 0보다 큰 동안 반복합니다.
    • number가 0이 되면 루프가 종료됩니다.
  2. result = result * divider
    • 현재 result 값을 10배 증가시킵니다.
    • 예를 들어, 처음 result는 0이므로 이 부분은 영향을 미치지 않습니다. 이후에는 새로운 자리수를 추가할 공간을 만듭니다.
  3. result = result + number % divider
    • number의 마지막 자리를 result에 추가합니다.
    • number % divider는 number의 마지막 자리를 구합니다. 예를 들어, 1234 % 10은 4입니다.
    • result에 마지막 자리를 더합니다. 예를 들어, 현재 result가 0이라면 0 + 4 = 4가 됩니다.
  4. number = number / divider
    • number의 마지막 자리를 제거합니다.
    • number / divider는 number를 10으로 나눈 몫을 구합니다. 예를 들어, 1234 / 10은 123입니다.
    • 다음 루프에서는 새로운 number로 123이 사용됩니다.


예제 동작 과정

초기 값:

  • number = 1234
  • divider = 10
  • result = 0

첫 번째 반복:

  • result = result * divider => result = 0 * 10 => result = 0
  • result = result + number % divider => result = 0 + 1234 % 10 => result = 0 + 4 => result = 4
  • number = number / divider => number = 1234 / 10 => number = 123

두 번째 반복:

  • result = result * divider => result = 4 * 10 => result = 40
  • result = result + number % divider => result = 40 + 123 % 10 => result = 40 + 3 => result = 43
  • number = number / divider => number = 123 / 10 => number = 12

세 번째 반복:

  • result = result * divider => result = 43 * 10 => result = 430
  • result = result + number % divider => result = 430 + 12 % 10 => result = 430 + 2 => result = 432
  • number = number / divider => number = 12 / 10 => number = 1

네 번째 반복:

  • result = result * divider => result = 432 * 10 => result = 4320
  • result = result + number % divider => result = 4320 + 1 % 10 => result = 4320 + 1 => result = 4321
  • number = number / divider => number = 1 / 10 => number = 0

루프 종료:

  • number가 0이므로 루프가 종료됩니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형