[도전 25일차] 아래의 출력화면과 같이 1월 1일부터 입력한 날까지의 날짜수를 계산하는 날짜 계산기 프로그램을 작성하시오. (단, 2월은 28일로 한다.)
코드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언어 30일 챌린지' 카테고리의 다른 글
[1일 1코딩] 최댓값 최솟값 구하기 : C언어 도전 27일차 (0) | 2020.06.11 |
---|---|
[1일 1코딩] 정해진 수 맞추기 게임 : C언어 도전 26일차 (0) | 2020.06.10 |
[1일 1코딩] '*' 별 나비 만들기 : C언어 도전 24일차 2 (0) | 2020.06.09 |
[1일 1코딩] '*' 별 모래시계 만들기 : C언어 도전 24일차 1 (0) | 2020.06.09 |
[1일 1코딩] '*' 별 다이아몬드 만들기 : C언어 도전 23일차 (0) | 2020.06.08 |
댓글