嵌入式day5

day5 流程控制

流程
顺序结构 
分支结构 
循环结构 

任何一个程序都可以是这三种结构的组合。


分支结构(选择)

选择  --- 判断 

能做判断?  --- 通过运算--给构造出判断的条件 

构造判断的条件
 关系运算 (大小关系)
 >
 >=
 <
 <=
 == 
 != 
 
 1 > 2 //表达式  
       //结果 
       //数据类型 

比大小(简洁版)

嵌入式day5_第1张图片

三个比大小 首选长款代码 可读性高

嵌入式day5_第2张图片
       
 关系运算的结果:
 真  1
 假  0 
 
 逻辑结果 
 
 
注意:
   c语言中不存在布尔类型,关系运算的结果 用 整型类型保存 
   
 python java c++ //关系结果 --- true false
 
 
 1  
 a = 2;
 (1<3)

练习:
a = 1, b = 2 ,c = 3
a>b==c  //0  
a+b>c   //0
a=(b>c) //b > c 
a=b>c

 逻辑运算 

  && 
  规则: 一假则假 
  
  表达式1 && 表达式2 
  

  ||
  规则: 一真则真 

  表达式1 || 表达式2   
非 
  ! 
  规则:真假相对 
  

逻辑运算 用来 组合 多个关系 

1

算术>关系运算>逻辑运算> 赋值>逗号

 问题:
 C语言中如何表示“真”和“假”? // 0 --假 
                             // 1 --真 
 系统如何判断一个量的“真“和“假"?
  0  表示假 
 非0 表示真 
 
 
 -1 //数值角度 看非0 
 0  //假 
 
 '\0' //
 'a' 
 
 (1>2) && (a++)
 
 &&截断特性(短路特性)
 ||也有截断特性

注意点:记

嵌入式day5_第3张图片

嵌入式day5_第4张图片


练习2:
1、    表达式 10!=9 的值是__1_____。

2、    设x,y,z和t均为int型变量,执行以下语句:
    x=y=z=1;
    
    t=++x||++y&&++z; 
    
    后t的值为___1_________。
        
        t = (++x) || ((++y) && (++z)); 
             2 
 
语句:
语法格式,
语法格式(语义)

形式1:
  if (表达式) //表达式 做判断的条件 
  {
    语句
  }//复合语句  

  
  含义:
    首先,判断 "表达式"?
    真
       执行 语句
       语句执行完,表示if语句结束,程序继续往下
    假
       表示if语句结束,程序继续往下 
   一定要记准格式    
      
main()
{
  ... 
  if ()
  {
  }
  ...

}
 
注意:
   if (表达式) ;
   {
     语句;
   }
   
形式2:
 if (表达式)
 {
   语句1
 }else 
 {
   语句2
 }
 含义:
   首先 判断"表达式"
   
   真:
     执行 ”语句1"
     语句1 执行完,表示if语句结束,程序继续往下
   假:
      执行 ”语句2"
     语句2 执行完,表示if语句结束,程序继续往下
     
练习:
    输入两个数,找出最大值 
    找出三个中的最大值 
--------------------------------------------------
形式3: 多分支语句

if (表达式1) //注意: 不能加分号
{
   语句1
}else if (表达式2) //注意: 不能加分号
{
   语句2;
}else if (表达式3)//注意: 不能加分号

   语句3;
}else if (表达式n)//注意: 不能加分号
{
   
}else
{
  
}

if-else-if 
含义:
判断 "表达式1"
真 执行 "语句1"   语句1 执行完,表示if语句结束,程序继续往下 
假 
   判断"表达式2" 
   真 执行 "语句2"   语句2 执行完,表示if语句结束,程序继续往下 
   假 
       判断"表达式3" 
       真 执行 "语句3"   语句3 执行完,表示if语句结束,程序继续往下 
       假 
         ...
         判断"表达式n" 
         真 执行 "语句n"   语句n 执行完,表示if语句结束,程序继续往下 
         假  
            执行 else后面语句 ,执行完,程序继续往下
练习:
学生成绩:
90-100 --- A 
80-89  --- B
70-79  --- C
60-69  --- D 
<=59   --- E     

score >= 90 && score <= 100 

嵌入式day5_第5张图片
嵌入式day5_第6张图片


   1.不存在单独的else语句 ,else出现一定有一个if与之对应 
   2.else 与 if匹配规则 
     一定从最里面开始匹配 
     else 与 最近 前面一个if匹配 
     
   if ()
   {
     if ()
     {
        if ()
        {
        }
        else
        {
        }        
     }else
     {
     }
   }else
   {
   
   }

练习:
   判断一个年份是不是闰年   
   
     
    条件:
    
    能被4整除  同时 不能被100 整除 
    
普通闰年:
         公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。
世纪闰年:
         公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
   
   
   条件:
     1. 能被4整除  同时 不能被100 整除 
     2. 能被400整除 
     leapYear

练习:
   输入一个月份,输出对应月份的天数 
   
   1 3 5 7 8 10 12  -- 31天 
   4 6 9 11         -- 30天 
   2                -- 29
                       28 
   

   
   
 条件运算:

 表达式1 ? 表达式2 : 表达式3
 
 问一问 表达式1 ? --是真 还是 假 
 
 真 ,执行 表达式2 
 假 ,执行 表达式3 

 练习:
    ? : //找两个数的最大值 


switch  //多分支的情况 
switch(表达式) //整型表达式 
{
    case 常量表达式:  //1+b 
         语句;
         break;
    case 常量表达式:
         语句;
         break;
    case 常量表达式:
         语句;
         break;
     default: //默认 
         语句;
         break;
}
含义:
  求解 "表达式"
  根据 结果 ,匹配 下面case后面的值 
  匹配上后,
  则执行对应case下的语句 ,
  直到遇到了break 或者是switch 右} (花括号)  

注意:
  1.switch 后表达式 需要是一个 整型表达式 
  2.case后面是,常量表达式,不能出现变量
 

你可能感兴趣的:(算法,数据结构)