본문 바로가기

C언어/공부한 것들

[혼자 공부하는 C언어] 연산자 확인문제

문제

 

3.76시간은 몇 시간, 몇 분, 몇 초인지 출력하세요.

 

코드
#include <stdio.h>	
	
int	main() {
	
	int hour, min, sec;
	double time = 3.76;

	hour = (int)time;
	time -= hour;	
	time *= 60;		
	min = (int)time;	
	time -= min;	
	time *= 60;		
	sec = (int)time;	

	printf("3.76시간은 %d시간 %d분 %d초 입니다.", hour, min, sec);

	return 0;

}

 

 

더보기

3.76시간은 3시간 45분 35초 입니다.

해석

1행 : 라이브러리 호출

2행 : int형 main 함수 생성

3행 : hour, min, sec을 정수형으로 선언, 초기화

4행 : time을 실수형으로 선언하고 3.76 저장

5행 : hour는 time(3.76)을 int형으로 형 변환 후 저장

6행 : time에 hour를 뺀 값을 저장

7행 : 6행 값에 60을 곱함

8행 : 7행 값을 정수형으로 형 변환한 것을 min에 저장

9행 : time에 min을 뺀 값을 저장

10행 : 9행 값에 60을 곱함

11행 : 9행 값을 정수형으로 형 변환한 것을 sec에 저장

12행 : 실수형 숫자들을 정수형으로 형 변환을 했으니 %d를 사용하여 hour, min, sec을 출력

 

느낀점

문제를 보자마자 이해가 너무 안 됐다. 형 변환하는 것은 이해를 했는데

형 변환해서 hour를 저장한 것은 이해가 되지만, min과 sec은 잘 이해가 안됐다.

그래서 천천히 생각을 하면서 문제를 읽고 생각해보니 생각보다 어렵지 않은 문제였다.

그렇게 어려운 문제는 아니지만 사고력이 조금은 길러질 수 있는 문제였던 것 같다.