|
发表于 2019-2-15 18:37:09
|
显示全部楼层
本帖最后由 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") ;
- }
- }
复制代码
这个条件判断如果用文字描述,表面上相当复杂,实际上逻辑很简单,一条语句足矣。 |
|