一个计算活了多少天的小算法
2012-03-24 12:47
260 查看
这个算法是把出生当作第一天,不算今天。
#include<iostream> #include<time.h> #include<windows.h> using namespace std; bool leapyear(int y){ if(y%400==0||(y%100!=0&&y%4==0)) return 1; else return 0; } void getSystemTime(int &yn,int &mn,int &dn) { time_t timer; time(&timer); tm* t_tm = localtime(&timer); yn=t_tm->tm_year+1900; mn=t_tm->tm_mon+1; dn=t_tm->tm_mday; cout<<"今天是 "<<yn<<"年"<<mn<<"月"<<dn<<"日"<<endl; } int Days(int y,int m,int d ){ //计算该年月日是该年的第几天 int cont=0; for(int i=1;i<m;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: cont+=31;break; case 2: cont+=28;break; default: cont+=30; } } if(leapyear(y)&&m>2) cont+=1; cont+=d; return cont; } int main(){ int y,m,d; int yn,mn,dn; int sum=0; cout<<"请输入年月日(例如:1990 01 01):"<<endl; cin>>y>>m>>d; getSystemTime(yn,mn,dn); if(yn==y){ cout<<"error!"<<endl; cout<<"本软件仅能提供 "<<yn<<"年之前的计算!"<<endl; exit(0); } //计算第一年的全部天数和中间的几年 for(int i=y;i<yn;i++) { if(leapyear(i)) sum+=366; else sum+=365; } //删除第一年算多了的 sum=sum-Days(y,m,d); //计算今年的 sum+=Days(yn,mn,dn); //输出 cout<<"今天是你人生的第 "<<sum<<" 天!"<<endl; cout<<"距离你人生的10000天还有 "<<10000-sum<<" 天"<<endl; system("pause"); return 0; }
相关文章推荐
- 计算一个整数的二进制表示有多少个1(别人的最快算法)
- 请设计一个算法,计算n的阶乘有多少个尾随零。 给定一个int n,请返回n的阶乘的尾零个数。保证n为正整数
- 算法的强大——快速计算一个正二进制整数中包含多少个1
- 算法的强大——快速计算一个正二进制整数中包含多少个1
- 计算一个字节里面有多少bit被置1 ,三种算法
- 【算法题】题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度
- 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。
- javascript 网页中实现一个计算当年还剩多少时间的倒数计时程序
- 已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。
- 如何计算一个算法的时间复杂度
- 刚想到一个计算地图计算距离的算法,自我感觉是最牛的算法,没有之一
- 如何精确计算出一个算法的CPU运行时间?
- 今天开始学Java 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。
- javascript 网页中实现一个计算当年还剩多少时间的倒数计时程序(转)
- 一个c++中计算算法运行时间的程序
- 一道算法题 计算任意输入的一个基于10 的CheckSum
- 设n个不同的整数排好序后存于T[1..n]中,若存在一个下标i(1≤ i ≤ n),使得T[i]=i。试设计一个有效算法找到这个下标,要求算法在最坏情形下的计算时间为O(log n)
- 程序员面试金典——解题总结: 9.17中等难题 17.3设计一个算法,算出n阶乘有多少个尾随0
- Python:将一个文件中的每一行复制到一个新创建的文件中,并计算文件中总共有多少行
- 从键盘上输入一个后缀表达式,试编写算法计算表达式的值。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、-、*、/四种运算。例如:234 34+2*$。