본문 바로가기

과제모음

[컴프2] C언어 입력받은 날짜 세기

반응형
#include <stdio.h>
// 입력받은 날짜에 대한 날짜수를 카운트하는 프로그램 

void main(){
int year,month,day,cntday; // 계산할변수
int birthy, birthm, birthd; 
int i, j, k;
year = month = day = cntday = 0; // 변수 초기화
birthy = birthm = birthd = 0;
printf("please input year : "); // 현재날짜 입력
scanf("%d", &year);
printf("please input month : ");
scanf("%d", &month);
printf("please input day : ");
scanf("%d", &day);
printf("please input bitrh-year : "); // 생년월일 입력
scanf("%d", &birthy);
printf("please input bitrh-month : ");
scanf("%d", &birthm);
printf("please input bitrh-day : ");
scanf("%d", &birthd);
if(year >= birthy){ // 생일이 더 먼저여야 한다
for(i=birthy; i<year; i++){ // 날짜수 계산
// 연도
if(i%4 == 0 && i%100 != 0 || i%400 ==0){ // 윤년이면
cntday += 366;
}
else{ // 윤년아니면
cntday += 365;
}
}
for(j=birthm; j<month; j++){ // 달
switch(j){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cntday += 31;
break;
case 2:
if(i%4 == 0 && i%100 != 0 || i%400 ==0){ // 윤년이면
cntday += 29;
}
else{
cntday += 28;
}
break;
default:
cntday += 30;
}
}
for(k=birthd; k<=day; k++){ // 일
cntday += 1;
}
if(year - birthy == 1 && month == 1){
if(year%4 == 0 && year%100 != 0 || year%400 ==0){ // 윤년이면
cntday -= 364;
}
else{
cntday -= 365;
}
for(j=birthm; j<12; j++){ // 달
switch(j){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
cntday += 31;
break;
case 2:
if(i%4 == 0 && i%100 != 0 || i%400 ==0){ // 윤년이면
cntday += 29;
}
else{
cntday += 28;
}
break;
default:
cntday += 30;
}
}
for(k=birthd; k<=31; k++){ // 일
cntday += 1;
}

}
printf("%d days\n", cntday);
}
else{
printf("Wrong Input\n");
}
}
반응형

태그