初识分支和循环(一)

        在C语言学习的过程中,或者说在编程路上不可避免的一道障碍(真的是障碍么?我反到觉得他们是和我们密不可分的伙伴,也是一件很趁手的工具)——分支和循环。

一、分支

        分支,听名字就很好理解:分了很多支。

        是的,就是这么直白。

        举个例子,一个十字路口,你的面前会有三条路线可以选择,为什么说是选择?不要想着可以同时走三条路,鱼和熊掌不可兼得,你只能走其中的一条.这时候就需要抉择了,根据你此时的需求和目的,选择要走的那条路.

        C语言中,这种如果...否则...的问题就叫分支.他的作用就是在你需要对信息进行过滤,筛选或者分组的时候,帮助你达成你想要达成的目的!语法也很简单,if else:

if(判断条件) {statement...} else {statement...}

        如果满足判断条件,便执行相关的操作;否则,执行其他的操作.例如:

if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
    printf("是闰年");
}else{
    printf("不是闰年");
}

        这就是个简单的闰年判断, 可以看到他的格式就是如此: 是就是,不是就不是.

        还有一点: else的数量不是固定的,具体问题具体分析,例如十字路口,是不是就需要if else else呢?按照成绩给学生评等级(A,B,C,D,E),又该怎么写分支语句呢,试一下.

        注意:else 不能单独出现,必须和if成对出现;而且else遵循就近原则,与最近的并且还未配对的if相匹配!

       switch语句就留给下一篇文章!

二、循环

        轻松加愉快的了解了分支后,再来认识一下循环吧,相信我,你能很轻松的掌握它!

        循环循环,顾名思义,重复的做一件事情.好了,你已经知道在C语言中循环的作用了.

        在C语言中,为了应对不同应用场景,以及从效率和代码编写难易程度等方面,一共有三种可以实现循环功能的语句: for循环,while循环和do while循环.

for (表达式1 ; 表达式2 ; 表达式3) { statements... }

        其中,表达式1用于初始化变量,他表示一个变量的初始值,然后从这个值开始循环;表达式2是一个条件判断表达式,他用于表示该循环的终点,也就是循环何时停止;而表达式3则用作对该变量进行操作.这就是for循环,简单吧.

while(表达式){ statements... }

         while循环看起来就更简单了,只给它一个条件判断表达式,而该表达式的结果不是true就是false,所以,while循环就是条件为true就循环,条件为false就结束循环. 那while(1)是什么效果呢?

do{ statements... }while(表达式);

         可以看到该语句先执行do后面{}中的内容,然后再进行表达式的判断,这么说你看出来它和while的区别了么?

        对于do while循环来讲,他和for循环和while循环的最大区别,也可以说是唯一区别在于: do while循环二话不说,先执行代码块的内容,然后进行判断是否继续循环.而for循环和while循环则是先进行判断,再决定要不要执行代码块中的内容,一旦发现判断条件为false(甚至刚开始就是false),马上结束循环.

        那for循环和while循环有没有区别呢?我认为是有的,还是很大的区别.我个人的理解是:for循环适合用于固定范围,固定步长的循环,相对来讲没那么灵活和自由,比较模板化;而while循环就相对灵活一些了,他可以进行一些比较个性化的操作,而且对于并不规律变化的事件来讲,那就非while莫属了.

       这里还是拿闰年判断举例: 在分支中,我们可以很好的对一个year进行判断,那如果给你10个year,100个,甚至1000个,你要分别写出对应数量的if else语句么?

        这时候我们可以看到,主要的问题就在于,year有很多可能的值,那我们如何控制这些可能得值呢?没错,就是用循环来解决.

        问题来了: 求一下1000年~2000年中,哪些年份是闰年,并把他们打印出来? 

        看到这个问题,你就要考虑一下要使用哪个循环语句了,for循环可以么?太可以了,while呢?好像也可以,和for相比呢?不清楚,写写看吧.do while...算了吧!

for(int year=1000; year<=2000; year++){
    if(year % 4 == 0 && year % 100 != 100 || year % 400 == 0){
        printf("%d ",year);
    }
}

        这不就是在单独判断一个year是否为闰年的代码套了个外壳,而这个外壳规定了year的范围,而该范围根据用户自定义或者实际需求来定的.再看看while: 

int year = 1000;
while(year<=2000){
    if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
        printf("%d ",year);
    year++;
}

        好像没什么区别,但又有点区别,给我的感觉是:将for循环的三部分拆开,放在了while循环的三个部分:循环外,循环内和条件判断.

        好像看起来都可以,是不是因为问题太简单看不出来区别?我觉得是的,问题又来了: 打印一个99乘法表,既然for循环和while循环有异曲同工之妙,是不是两者都可以像判断闰年一样,都可以轻松的完成任务呢?

        欲知后事如何,且听下回分解吧!

        (本文只是简单的介绍了一下概念,且本文内容都是本人的个人见解,如有错误或者逻辑不通的地方,还请指针,相互学习!)

  • 25
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值