算法分析:
闰年的条件是:①能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年;②能被100整除,又能被400整除的年份是闰年。如1600年、2000年是闰年。不符合这两个条件的年份不是闰年。
算法可表示如下:
S1:2000→y
S2:若y不能被4整除,则输出y“不是闰年”。然后转到S6
S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6
S4:若y能被100整除,又能被400整除,输出y“是闰年”;否则输出“不是闰年”。然后转到S6
S5:输出y“不是闰年”
S6:y+1→y
S7:当y≤2500时,转S2继续执行,如y>2500,算法停止。
在这个算法中,采取了多次判断。先判断y能否被4整除,如不能,则y必然不是闰年。如y能被4整除,并不能马上决定它是否闰年,还要看它能否被100整除。如不能被100整除,则肯定是闰年(例如1996年)。如能被100整除,还不能判断它是否闰年,还要被400整除,如果能被400整除,则它是闰年,否则不是闰年。
此算法对应的源程序如下:
main(){
int y=2000;
while(y<=2500){
if(y%4!=0) printf("%d 不是闰年\n",y);
else if(y%100!=0) printf("%d 是闰年\n",y);
else if(y%100==0 && y%400==00) printf("%d 是闰年\n",y);
else printf("%d 不是闰年\n",y);
y++;
}
}
在这个算法中,每做一步,都分别分离出一些范围(已能判定为闰年或非闰