题目描述
定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,计算并输出该日在本年中是第几天。
输入描述
输入三个整数(并且三个整数是合理的,既比如当输入月份的时候应该在1至12之间,不应该超过这个范围)否则输出Input error!
输出描述
输出一个整数.既输入的日期是本月的第几天。
示例
输入
1985 1 20
2006 3 12
输出
20
71
思路
-
定义年月日结构体,并定义一个数组,存放每月的天数,方便后续计算相加。
-
输入年月日,首先判断是否是闰年,然后修改二月的天数;其次判断月份和天数是否输入正确。
-
定义sum,for循环遍历每月天数并相加。
具体实现
#include<bits/stdc++.h>
using namespace std;
struct node{
int year,month,day;
}p;
int f[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //每月天数
int main(){
//int year,month,day
while(cin>>p.year>>p.month>>p.day){
//判断是否是闰年,若是闰年为29天,否则为28天
if((p.year%400==0) || (p.year%4==0)&&(p.year%100!=0)) f[2]=29;
else f[2]=28;
//判断月份和天数是否合法
int flag=0;
if(p.month<1 || p.month>12) flag=1;
if(p.day<0 || p.day>f[p.month]) flag=1;
if(flag){
cout<<"Input error!"<<endl;
continue;
}
//计算天数
int sum = p.day;
for(int i=1; i<p.month; i++){
sum += f[i];
}
cout<<sum<<endl;
}
return 0;
}
小结
注意:
-
结构体的定义和输入使用。
-
判断闰年的方法。(能被400整除 或 能被4整除但不能被100整除)