回覆列表
  • 1 # 木子李ovo

    #include <stdio.h>

    //返回指定年月日是對應年度的第幾天

    int getDays(int month,int day);

    int isRunnian(int year);

    int main(int argc,char* argv[])

    {

    int year=0;

    int month=0;

    int day=0;

    printf("請輸入年月日格式示例20140101\n");

    scanf("%4d%2d%2d",&year,&month,&day);

    //簡化後的條件,是閏年且月份大於二,則返回天數加一,否則直接返回函式值

    int days = getDays(month,day);

    if (days==0){

    printf("您輸入的日期格式無效。\n");

    return 0;

    }

    if (isRunnian(year) && month >2){

    printf("輸入日期是對應年份的第%d天",days+1);

    }else{

    printf("輸入日期是對應年份的第%d天",days);

    }

    return 0;

    }

    //迴圈實現

    int getDays(int month,int day){

    int NUMBER[12]={31,28,31,30,31,30,31,31,30,31,30,31};

    int result=day;

    if (month >12){ //避免出現數組越界情況

    return 0;

    }

    for (int i=0;i< month-1;i++){//陣列下標是從零開始

    result+= NUMBER[i];

    }

    return result;

    }

    int isRunnian(int year){

    //閏年的條件

    //一:年度是400的整數倍,則是閏年

    //二:年度能被4整除且不能被100整除

    return year%4 ==0 && year%100 !=0 || year%400 ==0;

    }

  • 中秋節和大豐收的關聯?
  • EDG隊內麥克瘋《E言難盡》釋出,廠長再添新梗“明偵探凱”,對此你怎麼看?