本帖最后由 jackz007 于 2019-2-15 19:33 编辑
多点条件判断容易导致逻辑冲突和混乱,造成代码重复和程序结构复杂化,参考一下下面的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(void)
{
int a ;
for(;;) {
printf("input a number of year\n") ;
scanf("%d" , & a) ;
if(! (a % 4) && (a % 100 || ! (a % 400))) printf("it is leap year\n") ;
else printf("it is noleap year\n") ;
}
}
以上关于润年判断的代码基于格里历,只能适用于 1582 年以后,如果要突破此限制,需要兼容儒略历,不麻烦,只要继续增加一个条件判断即可。下面是修改后的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(void)
{
int a ;
for(;;) {
printf("input a number of year\n") ;
scanf("%d" , & a) ;
if(! (a % 4) && (a < 1582 || a % 100 || ! (a % 400))) printf("it is leap year\n") ;
else printf("it is noleap year\n") ;
}
}
这个条件判断如果用文字描述,表面上相当复杂,实际上逻辑很简单,一条语句足矣。 |