C语言知识清单(3)——分支与循环

分支与循环

1.C语言是结构化的程序设计语言,这里的结构指的是顺序结构,选择结构,循环结构。

2.分支结构:if,swich

  循环语句:for,while,do while

3.if语句

if(表达式)

      语句

表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。

C语言中,零为假,非零为真。注意,表达式的结果如果是零,结果是不执行的,非零才执行。

ps:如果有多个if和else,可以记住这样一条规则,else总是和最近的if搭配。

4.常见问题:else悬空

因为else总是和最近的if匹配,当if…else被嵌套在一个大的if语句中时,大的if语句判断不成立,不会执行里面的if…else全部跳过,注意分清楚。else是和哪一个if匹配。

5.关系操作符(6种)

> 大于运算符

< 小于运算符

>= 大于等于运算符

<= 小于等于运算符

== 相等运算符

  != 不相等运算符

ps:关系操作符通常返回0或1表示真假

6.注意区分相等运算符和赋值操作符

相等运算符为两个等号==

赋值操作符为一个等号=

如果混淆,代码也能运行,但会有预料之外的结果,比如把判断相等的操作符写为赋值操作符,那么不管输入的数字是多少都会被赋值为新的数值。

为了防止这种错误,有些程序员在写代码判断相等时,会把数字写在左边,变量写在右边,如3==x,如果等号输少了,编译器会报错。

7.有一个非常容易犯的错误要注意:多个关系运算符不宜连用。

如:i<j<k连续使用两个小于运算符,这是合法表达,不会报错,但是通常达不到想要的结果,并不能保证j的值在i到k之间,关系运算符从左到右执行,实际上行使的是(i<j)<k,计算时i<j的返回值是0或1,所以最终是0或1与k进行比较,达不到我们的目的。

如果要实现i<j<k的判断,我们要使用下面的写法:i<j&&j<k

8.条件操作符(又叫三目操作符)

形式如:exp1?exp2:exp3其中exp1,exp2,exp3均为表达式,“?”和“:”才是三目操作符。

条件操作符是计算逻辑是:如果exp1为真,exp2计算,计算的结果是整个表达式的结果,如果exp1为假,exp3计算,计算的结果是整个表达式的结果。

9.逻辑操作符(逻辑运算的结果只有0和1)

C语言中0为假,非0为真。

!逻辑取反运算符或逻辑取非操作符,用于改变单个表达式的真假。(单目操作符)

&&与运算符,就是并且的意思,两侧表达式同真为真,有假则假。(双目操作符)

丨丨或运算,就是或者的意思,两侧表达式有真则真,全假才假。(双目操作符)

10.短路求值

指左边表达式满足逻辑运算符的条件,就不再对右侧的表达式求值。原因是C语言逻辑运算符的特点是总是先对左侧的表达式求值,再对右侧的表达式求值,这个顺序不变。

事实上,我们一般出现短路求值的情况有两种

一是在与运算中左侧表达式为假短路

二是在或运算中左侧表达式为真短路

根据左侧的表达式结果就能得出整个表达式的结果,0或1,真或假。

11.switch的分支语句

形式如下:

          switch(expression){

              case value1:statement

              case value2:statement

              default:statement

}

注意:switch后面的expression必须是整形表达式

          case后的值,必须是整形常量表达式

          case和后面的数字时间必须有空格

          每一个case语句中的代码执行完后,需要加上break,才能跳出这个swich语句。如果没有break,会执行下一个case。

          根据表达式exprssion不同的值,执行相应的case分支,如果找不到对应的值,就执行default分支。

          在switch语句中,case语句和default语句是没有顺序要求的,能满足要求即可,不过我们一般把default语句放在最后。

          switch语句有两层,里层的break只能跳出自己的循环,不能跳出外面的循环。

12.循环语句while

while(表达式)

        语句;

表达式非零执行循环,语句执行完后再判断,是否进行下一次循环,为零不执行循环。

13.循环语句for

for(表达式1;表达式2;表达式3)

表达式1用于循环变量的初始化

表达式2用于循环结束条件的判断

表达式3用于循环变量的调整(就是怎么变)

执行流程:表达式1初始化,表达式2判断,执行循环体,表达式3,表达式2判断,执行循环体,表达式3……

 

ps:在for循环的第三个表达式 即循环变量的调整部分i++和++i在效果上没有区别,C语言中不存在++i比i++高级的说法。C++语言中,内置类型上也不存在,自定义类型确实++i的效率高于i++

 

14.循环语句do……while语句

do

   语句;

while(表达式);

while和for这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循。而do…while循环是先直接进入循环体,执行循环语句,然后再执行while后的判断表达,表达式为真就会进行下一次循环,表达式为假就不再循环。

ps:在do…while循环中,循环体至少是执行一次的。是do…while比较特殊的一点。

15.break语句和continue语句

break语句:永久的终止循环,只要break被执行,直接就会跳出循环,继续往后执行。

continue语句:跳过本次循环continue后面的代码,在for循环和while循环中是存在差异的。

在while语句中,continue会跳过continue后面的代码回到while循环的判断表达式,这时如果循环的调整是在continue后面也会被跳过,从而导致输入的数字恒为某一值。程序进入死循环。do…whike中的continue和while语句中的continue用法几乎一模一样。

在for语句中,continue会跳过本次循环中continue后面的代码,直接去到循环的调整部分,即for循环的表达式3。

16.goto语句

C语言提供了一种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。

如:

#include<stdio.h>

int main()

{

        printf("hehe\n");

        goto next;

        printf("haha\n");

next:

        printf("跳过了haha的打印\n”);

        retutn 0;

}

跳转标号使用时后面加冒号。

goto语句如果使用不当,就会在函数内部随意乱跳转,不建议使用。但是在多层循环嵌套的代码中,使用go to语句能快速跳出,非常方便。如下:

for(…)

{

      for(…){

                for(…){

                            if(disaster)

                            goto error;

                         }

               }

}

error:

……

 

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青山轻舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值