日期

176 阅读1分钟

题目描述

定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,计算并输出该日在本年中是第几天。

输入描述

输入三个整数(并且三个整数是合理的,既比如当输入月份的时候应该在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整除)