본문 바로가기
1일1코딩/C언어 30일 챌린지

[1일 1코딩] 날짜 계산기 만들기 : C언어 도전 25일차

by 프밍샘 2020. 6. 9.

[도전 25일차] 아래의 출력화면과 같이 1월 1일부터 입력한 날까지의 날짜수를 계산하는 날짜 계산기 프로그램을 작성하시오. (단, 2월은 28일로 한다.)

 

[1일 1코딩] 날짜 계산기 만들기 : C언어 도전 25일차

 

 

코드1) 입력받은 일(day) 수와 입력받은 월(month) 이전 월들의 일수를 모두 더하면 총 날짜를 계산할 수 있습니다. 개념적으로 이해하기는 쉽지만, 코드가 너무 길고 효율적이지 못합니다. 

#include <stdio.h>
int main(){
	int month, day;
	
	printf("월을 입력하세요:");
	scanf("%d", &month);
	printf("일을 입력하세요:");
	scanf("%d", &day);
	
	switch(month){
		case 1:
			day=day;
			break;
		case 2:
			day=day+31;
			break;
		case 3:
			day=day+31+28;
			break;
		case 4:
			day=day+31+28+31;
			break;
		case 5:
			day=day+31+28+31+30;
			break;
		case 6:
			day=day+31+28+31+30+31;
			break;
		case 7:
			day=day+31+28+31+30+31+30;
			break;
		case 8:
			day=day+31+28+31+30+31+30+31;
			break;
		case 9:
			day=day+31+28+31+30+31+30+31+31;
			break;
		case 10:
			day=day+31+28+31+30+31+30+31+31+30;
			break;
		case 11:
			day=day+31+28+31+30+31+30+31+31+30+31;
			break;
		case 12:
			day=day+31+28+31+30+31+30+31+31+30+31+30;
			break;
	} 
	printf("1월1일부터 %d일 입니다.\n", day);
	return 0;
}

 

 

 

 

코드2) 변수를 이용하여 수식을 간략하게 작성할 수 있습니다.

include <stdio.h>
int main(){
	int month, day, _30th=30, _31th=31, _28th=28;
	
	printf("월을 입력하세요:");
	scanf("%d", &month);
	printf("일을 입력하세요:");
	scanf("%d", &day);
	
	switch(month){
		case 1:
			day=day;
			break;
		case 2:
			day=day+_31th;
			break;
		case 3:
			day=day+_31th+_28th;
			break;
		case 4:
			day=day+2*_31th+_28th;
			break;
		case 5:
			day=day+2*_31th+_28th+_30th;
			break;
		case 6:
			day=day+3*_31th+_28th+_30th;
			break;
		case 7:
			day=day+3*_31th+_28th+2*_30th;
			break;
		case 8:
			day=day+4*_31th+_28th+2*_30th;
			break;
		case 9:
			day=day+5*_31th+_28th+2*_30th;
			break;
		case 10:
			day=day+5*_31th+_28th+3*_30th;
			break;
		case 11:
			day=day+6*_31th+_28th+3*_30th;
			break;
		case 12:
			day=day+6*_31th+_28th+4*_30th;
			break;
	} 
	printf("1월1일부터 %d일 입니다.\n", day);
	return 0;
}

 

 

코드3) 배열을 이용하여 프로그램 코드를 간략화 할 수 있습니다.

#include <stdio.h>
int main(){
	int i, day, month_s, month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	
	printf("월을 입력하세요:");
	scanf("%d", &month_s);
	printf("일을 입력하세요:");
	scanf("%d", &day);
	
	for(i=1;i<12;i++){
		if(i==month_s) break;
		else day=day+month[i-1];
	}
	
	printf("1월1일부터 %d일 입니다.\n", day);
	return 0;
}

 

 

 

 

 

 

 

 

 

[1일 1코딩] 날짜 계산기 만들기 : C언어 도전 25일차

댓글