标签:年份 闰年 int 天数 age 练习 c++ answer
关于c++的一个日常练习,可以说是大糊涂导致的了。原题是要求输入个人年龄,然后得出年龄包含月数,然后错误审题的我搞了个判断闰年,最后干脆直接另起一题:输入个人生日和所处年份,得出年龄和度过的天数以及月数。
思路如下:
判断所在年份是否是闰年,如果不是,就计算得出中间的四年一周期的周期数乘以四年的天数,再加上剩下的平年的天数即可;反之也一样思路,计算中间期,得出所占天数,计算剩余天数。
放代码:
//练习 -- 通过输入生日和现在日期判断活了多少天(细思极恐),多少个月,几岁了//
#include<iostream>
using namespace std;
int main() {
int reap(int);
int i; //定义一个存储判断所在年份是否是闰年的参数
int y, m, d; //对应生日的准确日期
int a, b, c; //对应现在的日期
int age, month, day; //对应输出的年月日
cout << "Please enter your birthday:";
cin >> y>>m>>d;
cout << "Please enter the particular date:";
cin >> a>>b>>c;
i = reap(a);
age=a-y; //对应年龄是现在的年份减去出生年份
month = (age - 1) * 12 + (12 - m + 1) + b; //对应度过的月数是年龄减1的值乘上12个月加上出生那年的月份和现在的月份
//度过的天数的计算办法,由于闰年平年的不同,先得出其中经过了多少个四年周期,然后是这个完整周期前面和后面对应的平年计算//
if (!i) {
switch (a % 4) {
case 1:day = ((age - 1) / 4) * 1461 + ((age - 1) % 4 + 1) * 365; break;
case 2:day = ((age - 2) / 4) * 1461 + ((age - 2) % 4 + 2) * 365; break;
case 3:day = ((age - 3) / 4) * 1461 + ((age - 3) % 4 + 3) * 365; break;
}
} //这个对应的是所在年份不是闰年的天数计算//
else
day = (age / 4) * 1461 + (age % 4) * 365;
cout << "Congratulation!You are " << age << " years old!" << endl;
cout << "And you've been passed "<<day<<" days and "<<month<<" months." << endl;
system("pause");
return 0;
}
//判断所在年份是否为闰年//
int reap(int year) {
bool answer;
if (year % 4 == 0) { //年份整除4
if (year % 100 == 0) { //年份整除100
if (year % 400 == 0) //年份整除400
answer = true; //能够被4、100、400整除的是闰年
else
answer = false; //反之非闰年
}
else
answer = true; //能够被4但不能被100整除的肯定是闰年
}
else
answer = false; //都不能被4整除了肯定不是闰年了
return answer;
}
这个是在vs2015上面运行得出的结果。
标签:年份,闰年,int,天数,age,练习,c++,answer 来源: https://blog.csdn.net/weixin_44948269/article/details/112285180
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。