#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;
}