【项目2-日期结构体】定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天?
/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: date.cpp
* 作 者:
* 完成日期: 年 月 日
* 版本号: v1.0
* 输入描述:年月日
* 问题描述:输出对应的那一天是这一年的第几天
* 输出:第几天
*/
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int main()
{
Date date;
cout<<"input year,month,day:";
cin>>date.year>>date.month>>date.day;
int days;
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days<<"天."<<endl;
return 0;
}
参考解答一:
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int main()
{
Date date;
cout<<"input year,month,day:";
cin>>date.year>>date.month>>date.day;
int days;
switch(date.month)
{
case 1: days=date.day; break;
case 2: days=date.day+31; break;
case 3: days=date.day+59; break;
case 4: days=date.day+90; break;
case 5: days=date.day+120; break;
case 6: days=date.day+151; break;
case 7: days=date.day+181; break;
case 8: days=date.day+212; break;
case 9: days=date.day+243; break;
case 10: days=date.day+273; break;
case 11: days=date.day+304; break;
case 12: days=date.day+334; break;
}
if ((date.year %4== 0 && date.year % 100 != 0
||date.year % 400 == 0) && date.month >=3)
days+=1;
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days
<<"天."<<endl;
return 0;
}
参考解答二:
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
Date date;
cout<<"input year,month,day:";
cin>>date.year>>date.month>>date.day;
int days=0,i;
for(i=1;i<date.month;++i)
days+=d[i]; //当月之前的天数
days+=date.day; //加上本月天数
if ((date.year %4== 0 && date.year % 100 != 0
||date.year % 400 == 0) && date.month >=3)
days+=1; //闰年的2月要加1天
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days
<<"天."<<endl;
return 0;
}
参考解答三: 函数版1——用结构体的分量当形参
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int days(int,int,int);
int main()
{
Date date;
cout<<"input year,month,day:";
cin>>date.year>>date.month>>date.day;
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第";
cout<<days(date.year,date.month,date.day)<<"天."<<endl;
return 0;
}
int days(int yy,int mm,int dd)
{
int n=0,i;
for(i=1;i<mm;++i)
n+=d[i]; //当月之前的天数
n+=dd; //加上本月天数
if ((yy %4== 0 && yy % 100 != 0
||yy % 400 == 0) && mm >=3)
n+=1; //闰年的2月要加1天
return n;
}
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int days(Date);
int main()
{
Date date;
cout<<"input year,month,day:";
cin>>date.year>>date.month>>date.day;
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第";
cout<<days(date)<<"天."<<endl;
return 0;
}
int days(Date ymd)
{
int n=0,i;
for(i=1;i<ymd.month;++i)
n+=d[i]; //当月之前的天数
n+=ymd.day; //加上本月天数
if ((ymd.year %4== 0 && ymd.year % 100 != 0
||ymd.year % 400 == 0) && ymd.month >=3)
n+=1; //闰年的2月要加1天
return n;
}