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