进阶项目6.1-两人生日差

来源:互联网 发布:ubuntu 启动过程 黑屏 编辑:程序博客网 时间:2024/05/16 15:39

任务和代码:输入两个人的生日,求出他们相差多少天。

/*文件名: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;}


0 0
原创粉丝点击