欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++学习(十)(C语言部分)之 分支语句

程序员文章站 2022-04-12 11:57:23
#include // std 标准 io > input output 输入 输出 printf scanf getchar ...... #include // system libary库 //预处理命令 可以当做注释用#if 0 //#if 条件 如果调 ......

 #include<stdio.h> // std 标准  io ---->  input  output  输入 输出  printf scanf getchar ......

 #include<stdlib.h> // system libary库

 

//预处理命令 可以当做注释用
#if 0 //#if 条件 如果调件满足 后面的这段程序会被编译

#elif 1 //else if条件2

#else // else

#endif // 作为结束的标记

 

 

 

 

一、c语言中有三大流程
1、顺序结构 从上往下 依次执行 最基础的结构

例如:

将下列语句 依次执行 输出

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

 

2、循环结构  就是一个一直执行的过程

比如:一直吃  就是循环
3、分支结构  就是一个带有选择性的 

比如:“你今天吃饭还是不吃饭?” 根据当前情况进行选择   吃或者不吃就是分支

 

二、分支

分支
1、if else
  > < = !=
  ! && ||
  数字也可以作为条件

  格式:
  if(饿){吃;}//只有if没有else

  if(条件)(语句1)//有if和else
  else(语句2)

    嵌套 if的()或者else的()里面还有if--->嵌套

  if(条件1){语句2} //多层分支
  else if(条件2){语句2}//可以有多个else if
  ......
  else if(条件n){语句n}
  else {语句}
  先判断if if成立执行语句1 直接跳出
  if不成立 判断else if 语句2 条件2成立执行语句2

注意点:
        1、有if不一定有else 但是有else必定有if

        2、if 语句后面不要加分号

             如果if满足不执行任何语句可以加分号 

        3、关于{}的省略

             不加{} if只匹配离他最近的一句

             如果{}只有一句 那么可以省略{}

             刚刚开始写 不熟练就不要省略了

        4、条件的写法

              if(20==x) 涉及到 == 的时候 常量放左边 避免少写=

 



最简单的例子:

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

如上图的程序 因为x=1,不满足x>2的条件 所以直接执行后面的语句

如果改为x=3则会执行 括号里面的语句

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

 

有else的语句://else是可以省略的

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

所以 条件不同时 就会执行不同的语句

条件嵌套例子;

C++学习(十)(C语言部分)之 分支语句

当前语句会执行49行这一句

C++学习(十)(C语言部分)之 分支语句

 

改变一下条件 男士改为女士

C++学习(十)(C语言部分)之 分支语句

当前会执行第53行的语句

C++学习(十)(C语言部分)之 分支语句

 

多层嵌套;

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

 

C++学习(十)(C语言部分)之 分支语句

在改代码中 一个 = 表示赋值   ==  表示等于

根据设置断点 逐语句调试 最终执行的是第85行代码 然后跳出循环

C++学习(十)(C语言部分)之 分支语句

 

用数字做判断条件 0为假 其他数字为真

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

因为条件为假 所以不执行里面的语句

 C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

 

如果在if后面加分号

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

他就会直接执行后面的语句

所以 if(o);   就等价于  if(0){}

有关{}的省略

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

 

省略{}后

 C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

说明 if 只控制第一句 

2、switch

用于枚举出所有的选项

   格式; 

switch(变量)

{括号不能省略

default: 语句;break;//可以放在其他位置 也可以省略

case 常量1;break;

case 常量2;break;

...

}

//比较case后面的常量的值 和变量的值 相等就执行
都不相等 就执行default

所有可能的选项都能列举出来就用switch (可以和枚举搭配)
所有分支全部可以用if,但是某些情况下switch更加简洁

注意 1:default可以放任何地方 也可以不写 但是一个switch里面只能有一个default
        2:case后面的值不能相同 case后面只能是整型和单个字符 不可以是 小数和字符串(中文算字符串)
        3:break case和default后面
          先匹配对应的case 或者default 然后一直往后执行 直到遇到break结束

 

例如:

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

 

 当我们删除后面的break时

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

之所以会输出这样的结果是因为 当代码week=5 匹配到第138行时  开始执行 但是因为138行的break没有的 所以不会停下来 继续往后面执行 知道遇到break时调出循环

所以会打印出两个结果

 

三目 也可以作为分支

?:

if(条件){语句1;}

else{语句2;}

 

条件?语句1:语句2  // 稍微简单点

x=3>4?3:4;

等价于

if(3>4){x=3;}

else{x=4;}

 

C++学习(十)(C语言部分)之 分支语句

C++学习(十)(C语言部分)之 分支语句

同一个问题 两种处理方式   上面的是if else语句  下面的是三目运算

 

 

 调试代码如下:

  1 /*
  2 1、顺序结构  从上往下 依次执行
  3 2、循环结构  一直吃
  4 3、分支结构  吃或者不吃
  5 
  6 
  7 分支
  8   1、if else
  9   > < = !=
 10   ! && ||
 11   数字也可以作为条件
 12 
 13   格式:
 14   if(饿){吃;}//只有if没有else
 15   
 16   if(条件)(语句1)//有if和else
 17   else(语句2)
 18 
 19   嵌套 if的()或者else的()里面还有if--->嵌套
 20 
 21   if(条件1){语句2} //多层分支
 22   else if(条件2){语句2}//可以有多个else if
 23   ......
 24   else if(条件n){语句n}
 25   else {语句}
 26   先判断if if成立执行语句1 直接跳出
 27   if不成立 判断else if 语句2  条件2成立执行语句2
 28 
 29 注意点
 30   1、有if不一定有else 但是有else必定有if
 31   2、if 语句后面不要加分号
 32     如果if满足不执行任何语句可以加分号 
 33   3、关于{}的省略
 34 
 35   2、switch
 36   格式;
 37 
 38   switch(变量)
 39   { 括号不能省略
 40   default:语句;break;//可以放在其他位置 也可以省略
 41   case 常量1;break;
 42   case 常量2;break;
 43   ...
 44   }
 45   //比较case后面的常量的值 和变量的值 相等就执行
 46     都不相等 就执行default
 47 
 48 所有可能的选项都能列举出来就用switch (可以和枚举搭配)
 49 所有分支全部可以用if,但是某些情况下switch更加简洁  三目也简单
 50 
 51 注意 1:default可以放任何地方 也可以不写 但是一个switch里面只能有一个default
 52     2:case后面的值不能相同 case后面只能是整型和单个字符 不可以是 小数和字符串(中文算字符串)
 53     3:break case和default后面
 54       先匹配对应的case 或者default  然后一直往后执行 直到遇到break结束
 55       
 56  三目 也可以作为分支
 57     ?:
 58       
 59       if(条件){语句1;}
 60       else{语句2;}
 61       条件?语句1:语句2  // 稍微简单些
 62       x=3>4?3:4;
 63       
 64       等价于
 65 
 66       if(3>4){x=3;}
 67       else{x=4;}
 68 
 69 */
 70 
 71 #include<stdio.h>
 72 int main()
 73 {
 74 
 75 /*
 76     int weight = 103;
 77     char sex = 'W';
 78     if (weight <=100)//条件满足 执行()中的语句  
 79     {
 80         printf("吃饭\n");//语句1
 81     }
 82     else//条件不满足 执行else中的语句  else是可以省略的
 83     {
 84         if (sex == 'M')//男士
 85         {
 86             printf("吃饭\n");//体重大于100 并且sex是男士
 87         }
 88         else
 89         {
 90             printf("节食\n");
 91         }
 92         
 93     }
 94 */
 95 
 96 /*
 97     int week = 5;//表示周五
 98     if (week == 1)
 99     {
100         printf("周一\n");
101     }
102     else if(week==2)
103     {
104         printf("周二\n");
105     }
106     else if (week == 3)
107     {
108         printf("周三\n");
109     }
110     else if (week == 4)
111     {
112         printf("周四\n");
113     }
114     else if (week == 5)
115     {
116         printf("周五\n");
117     }
118     else if (week == 6)
119     {
120         printf("周六\n");
121     }
122     else if (week == 7)
123     {
124         printf("周末\n");
125     }
126     else//当上面的条件全部不成立的话就执行该语句
127     {
128         printf("输入错误!!!\n");
129     }
130 */
131 
132 /*
133     if (0)//条件为假
134     //{
135         printf("hello world!\n");//不加{} if只匹配离他最近的一句
136         printf("你好世界!\n");
137     //}
138 */
139 
140 /*
141     int week = 5;
142     switch (week)
143     {
144     default: printf("错误\n"); break;
145     case 1: printf("周一\n"); break;
146     case 2: printf("周二\n"); break;
147     case 3: printf("周三\n"); break;
148     case 4: printf("周四\n");// break;
149     case 5: printf("周五\n"); //break;
150     case 6: printf("周六\n"); break;
151     case 7: printf("周末\n"); break;
152     }
153     */
154 
155 /*
156     int x = 1, y = 2, z = 3;//找到最大值
157     int max;
158     if (x > y)
159     {
160         //x比y大
161         if (x > z)
162         {
163             max = x;//x最大
164         }
165         else
166         {
167             max = z;
168         }
169     }
170     else
171     {
172         if (y > z)
173         {
174             max = y;
175         }
176         else
177         {
178             max = z;
179         }
180     }
181     printf("%d\n",max);
182 */
183 
184 /*  三目运算
185     max = x > y ?( x > z ? x : z) :( y > z ? y : z);
186     printf("%d\n", max);
187 
188 */
189 
190     getchar();//接收一个字符 防止闪屏
191     return 0; //函数结束
192 }
193 
194 
195 
196 
197 //预处理命令  可以当做注释用
198 #if 0 //#if 条件 如果调件满足 后面的这段程序会被编译
199 
200 #elif 1 //else if条件2
201 
202 #else // else
203 
204 #endif // 作为结束的标记

 

 

 2018-06-18 13:09:38