回覆列表
  • 1 # 使用者112017630179

    1、陣列的定義不對

    2、宏定義如果分多行寫的話,每行的末尾加一個\

    \ 後面不能再寫任何字元包括空格和註釋

    3、if(y<1900||y>2010||m<1||m>12||d<1||d>day[m-1]);末尾多了一個分號

    4、宏定義中儘量不要用單行註釋,因為後面如果有有用的程式碼就給註釋掉了。

    附上修改過的程式碼僅供參考:

    int day[12] = {31,28,31,30,31,30,31,31,30,31,30,31};//月陣列

    #define year(y,m,d) {day[1]=day[1]+(y%4==0&&y%100!=0||y%400==0);\

    /*d[1]代表 二月時,閏年+ 1天*/\

    if(y<1900||y>2010||m<1||m>12||d<1||d>day[m-1])\

    /*判斷日期是否合法*/\

    printf("日期非法\n");\

    else printf("日期合法\n");}

    int main()

    {

    int x,y,z;

    printf("輸入一個日期");

    scanf("%d%d%d",&x,&y,&z);

    year(x,y,z);

    return 0;

    }

  • 中秋節和大豐收的關聯?
  • 百家姓裡有姓再的嗎?