提高篇2-5課第五題

#include <stdio.h>
#include <stdlib.h>
//第五題,輸入日期,求時間,追加功能要求:可以判斷輸入日期是否合法
int legal_date(int y,int m,int d);
int days(int y, int m, int d);
int run_year(int year);
int main()
{
    int year, month, day;
    printf("輸入年 月 日: ");
    scanf("%d %d %d", &year, &month, &day);
    if(legal_date(year,month,day)==0)
        printf("輸入的日期非法!\n");
    else
    {
        printf("這是該年的第 %d 天\n", days(year, month, day));
    }
    return 0;
}
int run_year(int year)
{
    if((year%400==0)||(year%4==0&&year%100!=0))
        return 1;
    else
        return 0;
}
int legal_date(int y,int m,int d)
{
    int day;
    int r;
    switch(m)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day=31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            day=30;
            break;
        case 2:
        {
            if(run_year(y)==1)
                day=29;
            else
                day=28;
            break;
        }
        default:
            day=d-1;
    }
    if(day<d)
        r=0;
    else
        r=1;
    return r;
}

int days(int y, int m, int d)
{
    int date=0;
    switch(m)
    {
        case 12:
            date+=30;
        case 11:
            date+=31;
        case 10:
            date+=30;
        case 9:
            date+=31;
        case 8:
            date+=31;
        case 7:
            date+=30;
        case 6:
            date+=31;
        case 5:
            date+=30;
        case 4:
            date+=31;
        case 3:
        {
            if(run_year(y)==1)
                date+=29;
            else
                date+=28;
        }
        case 2:
            date+=31;
        case 1:
            date+=d;
            break;
        default:
            printf("error\n");
    }
    return date;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章