[도전 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 |
댓글