#include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<limits.h> bool sign = true; //设定一个标记 //判断闰年 bool Is_LeapYear(int year) { return ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)); } //用数组 查找这个月多少天 int YearMonth_To_day(int year, int month) { int month_day[13] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 }; if (Is_LeapYear(year)) { month = 0; } return month_day[month]; } //计算这一天是这一年的第多少天 int YearMonthDay_To_total(int year, int month, int day) { int month_leap[] = { 31,29,31,30,31,30,31,31,30,31,30,31 }; int month_non[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; int sum = 0; if (Is_LeapYear(year)) { if ((day <= 0) || (day > month_leap[month - 1])) { printf("day error\n"); sign = false; return INT_MAX; } else { for (int i = 0; i < month - 1; ++i) { sum = sum + month_leap[i]; } return sum + day; } } else { if ((day <= 0) || (day > month_non[month - 1])) { printf("day error\n"); sign = false; return INT_MAX; } else { for (int i = 0; i < month - 1; ++i) { sum = sum + month_non[i]; } return sum + day; } } } void Year() { int month, year, day,result_month,result_day_total; printf("please input year month day\n"); scanf("%d %d %d", &year, &month, &day); if (year <= 0) { printf("year error\n"); sign = false; } else if ((month <= 0) || (month > 12)) { printf("month error\n"); sign = false; } else { result_month = YearMonth_To_day(year, month); result_day_total = YearMonthDay_To_total(year, month, day); } if (sign) { printf("%d%3d has %d %3dth is the %d of the year\n", year, month, result_month, day, result_day_total); } } int main() { char c; do{ Year(); printf("y or n\n"); scanf("%c",&c ); c = getchar(); } while (c == 'y' || c == 'Y'); system("pause"); return 0; }
判断闰年 及其某天为这一年的多少天
猜你喜欢
转载自www.cnblogs.com/lc-bk/p/11072272.html
今日推荐
周排行