Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

if와 else if 문으로 24시간제를 12시간제로 변환하는 C 프로그램 만들기

문제 개요

C 언어를 사용하여 24시간제(HH:MM)로 입력된 시간을 12시간제(오전/오후 표기)로 변환하는 방법을 알아보겠습니다.

해결 방법

실행 시점에 사용자로부터 시간 값을 입력받은 뒤, 조건문(if ~ else if ~ else)을 활용해 이를 12시간제 형식으로 변환하여 출력합니다.

알고리즘

시작:
1단계: 24시간제 형식으로 시간 입력
2단계: 조건 검사
    i. hour == 0이면
       12와 분(min) 출력 (오전)
    ii. hour < 12이면
       hour와 min 출력 (오전)
    iii. hour == 12이면
       hour와 min 출력 (오후)
    iv. 그 외의 경우
       (hour % 12)와 min 출력 (오후)
종료:

프로그램 코드

#include<stdio.h>
int main(){
    int hr,min;
    printf("enter the time in 24 hour format:");
    scanf("%d:%d",&hr,&min);
    printf("The 12 hr format time:");
    if(hr==0){
       printf("12:%.2d AM\n",min);
    }
    else if(hr<12){
       printf("%d:%.2d AM\n",hr,min);
    }
    else if(hr==12){
       printf("%d:%.2d PM\n",hr,min);
    }
    else
       printf("%d:%.2d PM\n",hr % 12,min);
    return 0;
}

코드 설명

먼저 scanf 함수로 시(hour)와 분(min)을 각각 정수형 변수에 입력받습니다. 이후 조건문을 통해 다음과 같이 처리됩니다.

  • hour가 0일 때: 자정(00:00)이므로 '12'로 바꾸어 오전(AM)으로 출력합니다.
  • hour가 12 미만일 때: 오전 시간이므로 입력값 그대로 AM과 함께 출력합니다.
  • hour가 정확히 12일 때: 정오이므로 오후(PM)로 출력합니다.
  • 그 외(13~23)일 때: 나머지 연산자 %를 이용해 hr % 12를 계산하면 12시간제 시각이 되며, PM과 함께 출력합니다.

출력 시 %.2d 서식 지정자를 사용하면 분 값이 한 자리 수일 때도 앞에 0이 채워져 항상 두 자리로 표시됩니다(예: 10:05).

실행 결과

enter the time in 24 hour format:22:37
The 12 hr format time:10:37 PM

위 예시에서 24시간제인 22시 37분을 입력하면, 22 % 12 = 10이 계산되어 오후 10시 37분(PM)으로 올바르게 변환된 것을 확인할 수 있습니다.