任务和代码:输入两个人的生日,求出他们相差多少天。
/*
文件名:main.c
作者:小风景
完成日期:2016.7.29
问题描述:输入两个人的生日,求出他们相差多少天。
程序输出:
*/
#include <stdio.h>
#include <math.h>
int countday(struct Date date1,struct Date date2);
int d[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
struct Date
{
int year;
int month;
int day;
};
int main()
{
int days = 0;
struct Date date1 = {0};
struct Date date2 = {0};
printf("请输入第一个人的生日:");
scanf("%d %d %d", &date1.year, &date1.month, &date1.day);
printf("请输入第二个人的生日:");
scanf("%d %d %d", &date2.year, &date2.month, &date2.day);
if(date1.year > date2.year)
{
days = countday(date2,date1);
}
else
{
days = countday(date1,date2);
}
printf("两个人的生日相差%d天.\n",days);
return 0;
}
int countday(struct Date date1,struct Date date2)
{
int num = 0;
int day1 = 0;
int day2 = 0;
int i = 0;
while(date1.year < date2.year)
{
if((date1.year %4 == 0 && date1.year % 100 != 0 )|| date1.year % 400 == 0)
{
num += 1;
}
num += 355;
date1.year++;
}
//将前n个月的天数加起来
for(i = 0;i < date1.month;i++)
{
day1 += d[i];
}
//加上这个月的天数
day1 += date1.day;
for(i = 0;i < date2.month;i++)
{
day2 += d[i];
}
day2 += date2.day;
//如果是润年并且大于二月,应该加上1天
if((date1.month > 2) && ((date1.year %4 == 0 && date1.year % 100 != 0) || date1.year % 400 == 0))
{
day1 += 1;
}
if((date2.month > 2) && ((date2.year %4 == 0 && date2.year % 100 != 0) || date2.year % 400 == 0))
{
day2 += 1;
}
num += fabs(day1 - day2);
return num;
}