/***************************************************************
C語言
AUTHOR:liuyongshui
***************************************************************/
/*
問題十五:定義一個結構體變量(包括年、月、日),輸入兩個人的生日,求出他們相差多少天。
*/
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
int checkyear(int n); //原函數的申明,用於檢查是閏年還是平年。是閏就返回1,反之返回0
const int Day_Of_Month[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //平年的每月對應的天數
int main()
{
int i;
int j;
int flag;
int sum_day[2]={0,0};
struct date person_birthday[2];
printf("分別輸入兩個人的出生年月日\n");
for(i=0; i<2; i++)
{
printf("第%d人的出生日期:", i+1); //打印出第幾人
scanf("%d %d %d", &person_birthday[i].year,
&person_birthday[i].month,
&person_birthday[i].day);
}
for(i=0; i<2; i++)
{
flag=checkyear(person_birthday[i].year);
if(flag) //是閏就返回1,反之返回0
{
sum_day[i]++;
}
for(j=0; j<person_birthday[i].month; j++)
{
sum_day[i]+=Day_Of_Month[j];
}
sum_day[i]+=person_birthday[i].day;
}
for(i=0; i<2; i++)
{
printf("輸出第%d人的生日第%d天\n", i+1, sum_day[i]);
}
if(sum_day[0]>sum_day[1])
{
printf("他們倆相差%d天\n", sum_day[0]-sum_day[1]);
}
else
{
printf("他們倆相差%d天\n", sum_day[1]-sum_day[0]);
}
return 0;
}
// 函數的定義
int checkyear(int n)
{
if((n%4==0 && n%100!=0) || n%400==0) //是閏年
return 0;
else //平年
return 0;
}