第十七周 项目四(2)--两个人生日相差多少天(贺老师版)

来源:互联网 发布:linux如何不保存退出 编辑:程序博客网 时间:2024/04/29 05:17

问题及代码:

/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者:吴胜男*完成日期:2014年12月22日*版本号:v1.0**问题描述:定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。*输入描述:输入年月日*程序输出:输出该年的第几天*/#include <iostream>using namespace std;struct Date{    int year;    int month;    int day;} ;int daysOfMonth[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};int day(Date);  //计算出日期d和1900年1月1日差多少天int main(){    Date date;   int d1=0,d2=0,t;//d1和d2分别代表两个人的生日和1900年1月1日相差多少天    cout<<"第一个人的出生日期:";    cin>>date.year>>date.month>>date.day;    d1=day(date);    cout<<"第二个人的出生日期:";    cin>>date.year>>date.month>>date.day;    d2=day(date);    //对两个人的生日,求出了和1900年1月1日相差多少天(d1和d2),下面相减    t=d2-d1;    if(t<0)    {        t=-t;//若出现负数,则将其化为正数    }    cout<<"两人生日相差"<<t<<"天."<<endl;}int day(Date d){    int days=0,i;    for(i=1900; i<d.year; i++)//算出这年1月1日到1900年1月1日共多少天    {        days+=365;        if(i%400==0||(i%4==0&&i!=0))        {            days++;        }    }    for(i=1; i<d.month; ++i)        days+=daysOfMonth[i];       //加上当年当月之前的天数    days+=d.day;        //再加上本月天数    if (d.month >=3 && ((d.year %4== 0 && d.year % 100 != 0) ||d.year % 400 == 0))        days+=1;        //当年为闰年且进入了3月,还要加1天   return days;  //生日到1900年1月1日共多少天}

运行结果:

知识点总结:贺老师在这个程序中用到了数组表示一年中的12个月的天数,把第一个月记为0,当为一月时只加日就可以了。并且还以1900年为基准,计算两人生日相差的天数。。

学习心得:要善于积累,通过比较知道自己在for语句循环用的还不是很灵活。

0 0
原创粉丝点击