自学嵌入式第五天C语言篇4

流程控制

        流程控制主要分为顺序结构、选择结构、循环结构。任何一段C程序都能由上面三种结构组合构成。 

        顺序结构: 

                顺序结构是C语言编程中最常见的结构,几乎任何程序都是从开始到结束按照顺序依次从上到下执行。  

        选择结构(分支结构):

                在编写代码过程中,常常根据不同的情况采取不同的数据处理过程,这时需要用上选择结构,那么程序是怎么完成选择的呢?我们都知道C语言是通过if else或者switch来完成选择控制,接着我们来详细了解一下。

                if语句 

                         了解if语句前,我们应该先了解一下关系运算和逻辑运算。

                        关系预算的运算符主要为        >         <         >        =         <=         ==         !=

这些运算符都为双目运算符,需要注意的是,这些运算符在结合运算数后形成表达式,形式如a > b,这个表达式跟数学上简单的比大小概念不一样,这个表达式是有值的,并且为int类型, 这个表达式的值表示的是a > b这种关系是否成立,如果a大于b,则这种关系是成立的,表达式为1,反之为0。说到此处,C语言中没有布尔类型,靠0和1来表示真假,对于任意一个变量或常量,都是从数值的角度判断其是真是假,数值不为0则表示真,数值为0则表示假。

                        逻辑运算有‘与’、‘或’、‘非’,运算符为&&、||、! 。在高中数学我们学过,对于与运算,只要有一个值为假,则整个表达式为假;对于或运算,只要有一个值为真,则整个表达式为真;对于非运算,运算数为真,则整个表达式为假,运算数为假,则整个表达式为真。需要注意的是,!运算符优先级最高,&&运算符其次,||最低;对于与运算和或运算,都是从左往右算起,都有截断特性,&&运算时,如果第一个表达式为假,则整体的值为假,这个时候,程序不会执行计算&&运算符右边的表达式,这就叫截断效应,||运算时只要第一个值为真,截断效应也会使||右边的表达式不被计算。

                        关系运算和逻辑运算给if语句创造了判断的条件,以下是if语句的详细内容:

                        形式一        单分支
if(表达式)
{
    语句
}
  • 功能:处理单个情况。
  • 语义:如果表达式成立,则按顺序执行{}内的语句,如果表达式不成立,则if直接结束,执行代码中的下一条。
  • 语法细节:在if(表达式)后不要接分号,需细心编写代码。
                        形式二        双分支 
if(表达式)
{
    语句1
}
else
{
    语句2
}
  • 功能:处理二选一的情况。
  • 语义:如果表示成立,则执行语句1后结束if语句,若表达式不成立,则执行语句2结束if语句。
  • 语法细节:第一点同上,第二点,else后不写表达式,当然也不要写分号。
                        形式三        多分支
if(表达式1)
{
    语句1
}
else if(表达式2)
{
    语句2
}
...
else
{
    语句n
}
  • 功能:处理多种情况
  • 语义:如果表达式1成立,则执行语句1,后程序结束,如果表达式2成立,则执行语句2然后程序结束。
  • 注意1:这个if语句最终只能在其中的一条语句中选择执行,在考虑判断的条件时,应该是同一件事的不同情况,不是不同事的不同情况,需要考虑清除。 

对于双分支结构,c语言提供了一种关系运算符,可以简写部分程序,但在使用时,应该考虑到代码的可读性,不要写的太过复杂难懂。如下所示,表示获取a和b中的最大值。

int a,b;
scanf("%d%d",&a,&b)
int max = a > b ? a : b;

                switch语句              

  • switch语句结构如下: 
switch(表达式)
{
case(常量表达式1):
    语句1
    break;
case(常量表达式2):
    语句2
    break;
case(常量表达式3):
    语句3
    break;
default:
    语句4
    break;
}
  • 语义:表达式的值去匹配case后面的常量表达式,匹配到后将执行后面的语句。
  • switch语句结束条件:只有执行过程中遇到break或者执行到程序最后在会结束整个switch语句。
  • 注意:switch后面的表达式的结果必须是一个整型的数据;case后面只能接常量或者常量表达式;case和default是一个只在switch中起作用的标签,标签写错不会报错,只是匹配不到对应的情况;default不一定写到最后,但写在前面时break不能缺省,防止其继续执行后面的语句,因为表达式与case只匹配一次,匹配成功执行语句不退出则依次往下执行。

        循环结构 

        循环作为编程中比较使用比较广泛的操作,C语言主要提供了以下操作以完成循环: 

         goto        while        do--while        for

构成循环的四个要素
1.循环体(反复被执行的核心代码)
2.结束条件
3.使循环趋于结束的操作
4.循环的初始条件
        goto 

        其中goto并不是真正的循环语句,只是通过转向操作可以实现循环的效果。以以下代码讲解goto如何完成循环

int i = 0;
int sum = 0;

loop:
    sum = sum + i;
    i++;
    if(i <= 100)
    {
        goto loop;
    }

         loop是一个标签,这段代码通过goto的转到功能在i还小于等于100时,总是会回到sum = sum + i;这句代码依次往下执行由此构成循环,得到1加到100的总和。

        while

while的形式如下

while(表达式)
{
    语句
}

语义:当表达式成立时,执行语句,接着再次判断表达式是否成立,成立继续重复原先的过程,知道表达式不成立,while语句结束,如果一开始表达式就不成立,while语句直接结束。

注意:while表达式后不接分号,若果有,表达式成立时,它只是执行空语句,且无法完成使循环趋于结束的操作,使程序一直空转。如果也完成1到100求和,while操作可以这么写

int i = 0;
int sum = 0;

while(i <= 100)
{
    sum = sum + i;
    i++;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值