ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

分支与循环:让程序学会“思考”和“重复”

分支与循环:让程序学会“思考”和“重复” 一. 引言程序的两大“超能力”初学 C 语言的时候很多人会被分支、循环绕晕。其实说白了分支就是做选择循环就是重复干活生活里到处都是对应的场景。二. 分支让程序学会“做选择”分支的本质就一句话如果满足某个条件就走这条路否则走另一条路。它就像你出门前看天气——下雨就带伞出太阳就戴帽子。程序里的分支就是让代码根据不同的情况做出不同的反应。2.1 if 语句最简单的条件判断if 语句是分支里最基础的一种翻译过来就是“如果……就……”。它适合处理那种“要么做要么不做”的单一判断。举个例子判断一个人是不是成年人int age 19; if(age 18){ printf(已经成年了) }这里只有一种情况年龄够了就打印提示。如果年龄不够呢什么都不发生。这就是 if 的“单行道”特性。2.2 if-else 语句两条路的岔路口现实生活里更多时候是“非此即彼”。if-else 就是给程序加了一个“否则”的选项让两条路都能走通。还是用年龄举例这次加上“否则”的分支int age 16; if(age 18){ printf(成年了); else{ printf(未成年); }你看不管年龄是多少程序都会给出一个结果。这就是 if-else 和 if 最大的区别if 是“可做可不做”if-else 是“二选一必须选一个”。2.3 if-else if-else多岔路口的选择当选择不止两个时if-else if-else 就派上用场了。它就像导航仪根据你当前的位置给你规划一条最合适的路线。比如根据分数给学生评级​ int score 85 if (score 90){ print(优秀继续保持); } else if(score 80){ print(良好再努努力就能更上一层楼); } else if(score 60){ print(及格了但还有提升空间。); } else{ print(不及格需要加把劲了。); } ​这里有个关键点程序会从上往下依次检查一旦某个条件满足后面的就不再看了。所以条件的顺序很重要——如果把“大于等于60”写在“大于等于90”前面那考了95分的人也会被归到“及格”那一档这就闹笑话了。2.4 switch 分支固定值匹配switch就像自助点餐机输入编号对应不同菜品专门处理固定值匹配。千万别忘了加break不然会发生“点餐全上”的穿透bug。例如输入一个数字判断是星期几。int day 2; switch(day){ case 1: printf(周一); break; case 2: printf(周二); break; case 3: printf(周三); break; default: printf(输入错误); }三. 循环让程序学会“不厌其烦”循环解决的是另一个问题重复劳动。人做重复的事会累、会烦、会出错但程序不会。循环就是让程序“不厌其烦”地执行同一段代码直到满足某个条件才停下来。3.1 for 循环按“清单”办事for 循环适合那种“我知道要循环多少次”的场景。它就像你拿着购物清单逛超市——清单上有几项你就逛几项逛完就结束。比如明确要循环 5 次从 1 打印到 5。​ for(int i1; i5; i){ printf(当前数字%d\n,i); } ​逻辑第一步初始化变量第二步判断条件条件成立执行循环体执行完循环体执行自增然后回到第二步判断。适合提前知道循环次数遍历数组、打印九九表最常用3.2 while 循环按“条件”办事while 循环则适合“我不知道要循环多少次但我知道什么时候该停”的场景。它就像跑步——你不需要提前知道要跑多少步只要“还没到终点”这个条件成立就一直跑。例如int i 1; while(i 5){ printf(当前数字%d\n,i); i; }逻辑先检查条件条件成立才进入循环体。如果一开始条件就不成立循环体一次都不会跑。适合不知道循环要跑多少次的场景。3.3 do while 循环先干活再判断do while循环适合先执行再判断的的场景就像是先喝一口水再看看杯子里还有没有水以此来判断下回还能喝不。int i 1; do{ printf(当前数字%d\n,i); i; }while(i 5);逻辑不管条件如何循环体至少执行一次执行完一轮之后再去判断条件决定要不要继续。适合必须至少执行一次的场景比如菜单先打印菜单再等待用户选择。四.分支 循环组合真实代码最常用的搭配单独分支或者单独循环用处有限写项目基本都是搭配使用。 举个例子猜数字游戏。循环一直运行菜单分支判断玩家输入猜对就 break 跳出循环。while(1){ printf(猜数字); scanf(%d,num); if(num ans){ printf(大了\n); }else if(num ans){ printf(小了\n); }else{ printf(猜对); break; } }
返回列表