C语言实现计算已经活了多少天
输入生日,通过系统或者自己输入,获得当前日期,计算已经存活了多少天。
#include<stdio.h> #include<time.h> /** * 函数介绍: * 通过输入生日,通过系统获取今天的日期或者自行输入今天的日期,计算你活了多少天了。 * 参数介绍: * year_now:当前年份 * month_now:当前月份 * day_now:当然日子 * year_b:生日年份 * month_b:生日月份 * day_b:生日日子 */ int alive_days(int year_now, int month_now, int day_now, int year_b, int month_b, int day_b) { int sum = 0; //活了多少天 int years = 0; //中途有几年整,比如1999-2001,有一整年。 int years_arry[200]; //存放中途的整年数,用来判断平年闰年。 int pingNian = 0; //平年 int runNian = 0; //闰年 years = year_now - year_b - 1; years_arry[0] = 0; //整年存入数组 for (int i = 0; i < years; i++) { years_arry[i] = year_now - i - 1; } if (years_arry[0] > 0) { //活了超过一年 for (int i = 0; i < years; i++) { if (decide_year(years_arry[i]) == 1) { runNian++; } else { pingNian++; } } sum = pingNian * 365 + runNian * 366; sum = (sum + month_days(year_b, month_b) - day_b); while (++month_b <= 12) { sum = sum + month_days(year_b, month_b); } sum = sum + day_now; while (--month_now >= 1) { sum = sum + month_days(year_now, month_now); } } else { //活着不到一年 if (month_now == month_b) { sum = day_now - day_b; } else { sum = sum + month_days(year_b, month_b) - day_b; while (++month_b < month_now) { sum = sum + month_days(year_b, month_b); } sum = sum + day_now; } } return sum; } /** * 函数介绍: * 参数为年份与月份,返回这个月有多少天。 */ int month_days(int year, int month) { int sum = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: sum = 31; break; case 4: case 6: case 9: case 11: sum = 30; break; case 2: if (decide_year(year) == 1) { sum = 29; } else { sum = 28; } } return sum; } /** * 函数介绍: * 判断这是平年还是闰年 * 返回1为闰年,返回0为平年。 */ int decide_year(int year) { int flag = -1; if ((year % 4 == 0) && (year % 100 != 0)) { flag = 1; } else if (year % 400 == 0 && year % 100 == 0) { flag = 1; } else { flag = 0; } return flag; } /** * 函数介绍: * 程序入口,获取两个时间点。 */ int main() { int year_now; //当前年 int month_now; //当前月 int day_now; //当前日 int year_b; //生日年 int month_b; //生日月 int day_b; //生日日 int days = 0; //总存活天 int flag; //是否自己输入当前日期 int alive_days(int year_now, int month_now, int day_now, int year_b, int month_b, int day_b); int month_days(int year, int month); int decide_year(int year); time_t timep; struct tm *p; time(&timep); p = gmtime(&timep); year_now = 1900 + p->tm_year; //获取系统当前年 month_now = 1 + p->tm_mon; //获取系统当前月 day_now = p->tm_mday; //获取系统当前日 //为了避免printf与scanf顺序出问题,设置缓存区为空。 setvbuf(stdout, NULL, _IONBF, 0); printf("请输入您的出生日期:\n"); printf("年:"); scanf("%d", &year_b); printf("月:"); scanf("%d", &month_b); printf("日:"); scanf("%d", &day_b); printf("--------------------\n"); printf("系统获取到今天的日期是:%d年%d月%d日\n", year_now, month_now, day_now); printf("是否使用当前日期?\n" "1.使用当前日期\t2.不使用,自己输入\n在此输入:"); scanf("%d", &flag); if (flag == 2) { printf("请输入今天的日期:\n"); printf("年:"); scanf("%d", &year_now); printf("月:"); scanf("%d", &month_now); printf("日:"); scanf("%d", &day_now); } else { printf("使用当前系统时间进行计算!\n"); } printf("--------------------\n"); printf("您的出生日期为:%d-%d-%d\n", year_b, month_b, day_b); printf("今天的日期为:%d-%d-%d\n", year_now, month_now, day_now); days = alive_days(year_now, month_now, day_now, year_b, month_b, day_b); printf("您已经活了%d天,且行且珍惜。", days); return 0; }
程序运行结果:
1.自己输入当前日期:
2.使用系统提供当前日期
相关推荐
chensen 2020-11-14
拉斯厄尔高福 2020-11-04
杜倩 2020-10-29
拉斯厄尔高福 2020-10-19
嵌入式资讯精选 2020-10-15
zhaochen00 2020-10-13
penkgao 2020-10-13
yiyilanmei 2020-10-05
wanshiyingg 2020-09-29
Mars的自语 2020-09-27
shenwenjie 2020-09-24
一个逗逗 2020-09-22
flycony 2020-09-13
zhaochen00 2020-08-20
Biao 2020-08-20
qingsongzdq 2020-08-19
penkgao 2020-08-17
cetrolchen 2020-08-14
GuoSir 2020-08-07