这题我已经求出来了,所以老师才让我们更进一步,出了这题
这题我已经求出来了,所以老师才让我们更进一步,出了这题
#include <stdio.h> void main() { int year,month; printf("输入一个年份:\n"); scanf("%d",&year); if (100<year && year<9999) { if(year%4==0) printf("这是闰年\n"); else printf("这是平年\n"); printf("输入一个月份:\n"); scanf("%d",&month); if (month>0 && month<13) { if (month==2) if(year%4==0) printf("本月为29 \n"); else printf("本月为28 \n"); if ((month>0 && month!=2) || month>2) if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 ||month==12) printf("本月为31 \n",month); else printf("本月为30 \n",month); } else printf("月份有误。\n"); } else printf("年份输入有误。\n"); }
这是我之前的作业。
可惜你的那个关于判断闰年的算法不对阿,比如1800 可以被4 整除, 它是闰年吗? 回答是: 不是。
所以你的程序上来就不对了。
请你改正你的程序。
我知道那样判断闰年不是正确的公式,可如果是这样
if (year%4==0 && year%100!=0 || year%400==0)
进行判断也不是完全正确,我不知怎么理解这个一直使用了这么久的公式,为什么也会出错。使用这个公式,输入2000年,得出的判断是2000年不是闰年。所以我才没改我的代码。
你的上面的那个表达式是不对的,我在程序中不是这么写的,你在仔细看看。
下面的是真确的写法:
bool isLeapYear = (year%4 == 0) && ((year%100 != 0) || (year%400) == 0);
这样你知道如何判断闰年了, 也就是说,如果给你一个年份,你可以判断出它是否为闰年,如果为闰年那么那年有366 天,如果不是, 那么那年有365 天。
现在给你出第二题,请你写一程序告诉我某一年的第一天到今天(2004.07.25)一共有几天?
那一条语句是我们书本上的。
你的这个:bool isLeapYear是一个数组,还是一个函数或者变量?我一直没看明白。
你的上面的那个表达式是不对的,我在程序中不是这么写的,你在仔细看看。
下面的是真确的写法:
bool isLeapYear = (year%4 == 0) && ((year%100 != 0) || (year%400) == 0);