华为机试HJ73:计算日期到天数转换
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ73:计算日期到天数转换相关的知识,希望对你有一定的参考价值。
作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
题目描述:
根据输入的日期,计算是这一年的第几天。
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
示例:
输入:
2012 12 31
输出:
366
解题思路:
本题是个数学问题,也是生活题。闰年要满足两个条件,年份可以被4整除,且不被100整除。首先用year判断是否为闰年;其次,建立闰年的月份天数表和非闰年的月份天数表;根据当前月份,累加其前n-1个月的完整天数,再加上当月的天数,完毕。
测试代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
int year,month,day;
while(cin>>year>>month>>day)
{
bool flag=(year%4==0&&year%100!=0)?true:false;
vector<int> months1={31,28,31,30,31,30,31,31,30,31,30,31}; // 非闰年
vector<int> months2={31,29,31,30,31,30,31,31,30,31,30,31}; // 闰年
int sum=0;
for(int i=0;i<(month-1);++i)
{
if(flag)
{
sum+=months2[i];
}
else{
sum+=months1[i];
}
}
sum+=day;
cout<<sum<<endl;
}
return 0;
}
以上是关于华为机试HJ73:计算日期到天数转换的主要内容,如果未能解决你的问题,请参考以下文章