鱼C论坛

 找回密码
 立即注册
查看: 3688|回复: 12

新人求助

[复制链接]
发表于 2019-2-15 18:37:09 | 显示全部楼层
本帖最后由 jackz007 于 2019-2-15 19:33 编辑

      多点条件判断容易导致逻辑冲突和混乱,造成代码重复和程序结构复杂化,参考一下下面的代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. main(void)
  5. {
  6.         int a                                                                         ;
  7.         for(;;) {
  8.                 printf("input a number of year\n")                                    ;
  9.                 scanf("%d" , & a)                                                     ;
  10.                 if(! (a % 4) && (a % 100 || ! (a % 400))) printf("it is leap year\n") ;
  11.                 else  printf("it is noleap year\n")                                   ;
  12.         }
  13. }
复制代码


       以上关于润年判断的代码基于格里历,只能适用于 1582 年以后,如果要突破此限制,需要兼容儒略历,不麻烦,只要继续增加一个条件判断即可。下面是修改后的程序:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. main(void)
  5. {
  6.         int a                                                                                     ;
  7.         for(;;) {
  8.                 printf("input a number of year\n")                                                ;
  9.                 scanf("%d" , & a)                                                                 ;
  10.                 if(! (a % 4) && (a < 1582 || a % 100 || ! (a % 400))) printf("it is leap year\n") ;
  11.                 else  printf("it is noleap year\n")                                               ;
  12.         }
  13. }
复制代码


    这个条件判断如果用文字描述,表面上相当复杂,实际上逻辑很简单,一条语句足矣。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-16 11:30:28 | 显示全部楼层
Muorius 发表于 2019-2-16 10:15
我还没开始学循环控制程序,等学了再回来看看

        重点在条件判断,不在循环,增加循环的目的只是为了让代码无条件反复执行,不至于运行 1 次就结束。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-4 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表