작은숲:위키노트/C 언어 예제/몇년 며칠째를 입력하면 몇월 며칠인지 출력하는 프로그램
보이기
/**
* Copyright (c) 2001,2002 Yoon, Hyunho <hhyoon@kldp.org>
* http://mooo.org
* ----------------------------------------------------------------------
*
* LICENSE
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* 년과 일을 입력하면 몇년 몇월 며칠인지 프린트하는 프로그램 ..
*
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{ char str_year[5], str_days[4];
int i, year, days;
int date, sum_day;
// 월에 해당하는 일수를 배열에 저장한다.
int days_month= { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 월에 해당하는 영문 이름을 포인터 배열에 저장한다.
char *months= { "January", "February", "March", "April",
"May", "June", "July", "August", "September", "October",
"November", "December" };
// 사용자의 입력을 검사한다.
do {
printf("Enter a year and days (2001 225): ");
scanf("%s %s", str_year, str_days);
// 입력받은 문자열을 정수로 바꿔주는 함수 atoi()를 사용한다.
year = atoi(str_year);
days = atoi(str_days);
} while (days < 0 || days > 365);
for (i = 0, sum_day = 0; i < 12; i++) {
if (sum_day + days_month[i] > days) {
date = days - sum_day;
break;
}
sum_day += days_month[i];
}
printf("%s %d, %d\n", months[i], date, year);
return 0;
}