c++小练习

关于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;
}

c++小练习
这个是在vs2015上面运行得出的结果。

上一篇:Android Choreographer 源码分析


下一篇:C++异常机制的实现方式和开销分析