判断闰年 及其某天为这一年的多少天

#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