主页 分类 关于

C语 选择结构程序设计

C语学习笔记

C语言提供了两种类型的选择结构
  • 条件选择结构: 根据给定的条件表达式进行判断, 决定执行某个分支中的程序段
  • 开关选择结构: 根据给定的整型表达式的值进行判断, 然后决定执行多个分支中的某个分支

程序流程图

graph LR A([" 起始框 "])
E[/" 输入/输出框" /]

B{" 判断框 "}

D[" 处理框 "]-->流程线C((" 连接点 "))

if 语句

if的三种格式

单分支选择结构


if ( 表达式 )
{ 语句; }

单分支选择结构图


graph TB A([" 开始 "])-->B{" 表达式 "} B{" 表达式 "}--非0 / 真-->D[" 语句 "] D[" 语句 "]-->E[" 结果 "] B{" 表达式 "}--0 / 假-->E[" 结果 "]

双分支选择结构


if ( 表达式 )
{ 语句1; }
else
{ 语句2; }

双分支选择结构图


graph TB A([" 开始 "])-->B{" 表达式 "} B{" 表达式 "}--真-->D[" A "] B{" 表达式 "}--假-->F[" B "] D[" A "]-->E[" 结果 "] F[" B "]-->E[" 结果 "]

多分支选择结构


if ( 表达式1 ) { 语句1; }
else if ( 表达式2 ) { 语句2; }
else if ( 表达式3 ) { 语句3; }
...
else if ( 表达式n ) { 语句n; }
else { 语句 n+1; }

多分支选择结构图


graph TD A([" 开始 "])-->B{" 表达式1 "} B{" 表达式1 "}--非0/真-->D[" 语句1 "] B{" 表达式1 "}--0/假-->C{" 表达式2 "}
C{" 表达式2 "}--0/假-->F{" 表达式3 "}
C{" 表达式2 "}--非0/真-->G[" 语句2 "]

F{" 表达式3 "}--0/假-->H{" 表达式4 "}
F{" 表达式3 "}--非0/真-->I[" 语句3 "]

H{" 表达式4 "}--0/假-->J[" 语句5 "]
H{" 表达式4 "}--非0/真-->K[" 语句4 "]

D[" 语句1 "]-->L[" 结果 "]
G[" 语句2 "]-->L[" 结果 "]
I[" 语句3 "]-->L[" 结果 "]
J[" 语句4 "]-->L[" 结果 "]
K[" 语句5 "]-->L[" 结果 "]

if 语句的嵌套


if ( 表达式1 )
if ( 表达式11 ) 语句11;
else 语句12;
else
if ( 表达式2 ) 语句21;
else 语句22;

// 其中要注意以下两种if语句结构的差别

// 第一种
if ( 表达式1 )
if ( 表达式11 ) 语句11;
else 语句12;

// 第二种
if ( 表达式1 )
{ if ( 表达式11 ) 语句11; }
else 语句12;

双分支选择结构图


多分支选择语句 ( switch 语句 )


switch ( 表达式 )
{
case 常量表达式1: 语句组1; break;
case 常量表达式2: 语句组2; break;
...
case 常量表达式n: 语句组n; break;
default: 语句组n+1;
}

switch语句执行流程图


graph TB A([" 开始 "])-->B{" 表达式 "} B{" 表达式 "}--值1-->F[" 语句1 "] B{" 表达式 "}--值2-->G[" 语句2 "] B{" 表达式 "}--值n-->H[" 语句n "] B{" 表达式 "}--default-->I[" 语句n+1 "] F[" 语句1 "]-->E[" 结果 "] G[" 语句2 "]-->E[" 结果 "] H[" 语句n "]-->E[" 结果 "] I[" 语句n+1 "]-->E[" 结果 "]
  1. switch 后面小括号里的表达式可以是任何类型的, 其常用的是字符或整型表达式

  2. case 后面的常量表达式是由常量组成的表达式, 其中的使用常量表达式的值必须互不相同, 且常量表达式的值必须与 switch 后面表达式的值类型相同

  3. 语句组是由若干个语句组成的, 但不需要用大括号括起来, 其中的语句可以是任何 C语言 的可执行语句, 当然也可以是另一个 switch 语句 ( 称为嵌套 switch 语句 ) ,即 switch 语句也是可以嵌套使用

  4. break 是 C语言的一种语句, 其功能是跳出当前 switch 语句, 在 switch 语句中 当执行某个语句组后, 后面若有 break , 变退出该 switch 语句, 如果省略了 break 语句, 则执行完某个语句组后, 将连续执行其后的语句组, 直至遇到下一个 break 语句, 如果后面没有 break 语句, 则一直执行到 switch 语句的最后一个语句

  5. 在书写格式上, 所有的 case 应对齐, 每个 case 后的语句缩格并对齐, 以方便看出各个分支的条件依据和应执行的操作

  6. 注意 case 和常量表达式之间要有空格

  7. 当 switch 后面表达式的值与某个 case 后面常量表达式的值一直时, 就会执行该 case 后面的语句组, 若所有 case 后面常量表达式的值和 switch 后面表达式的值都不相同时, 便执行 default 后面的语句组

  8. default 语句可以省略

  9. case 和 default 语句的出现次序是任意的, 可以变换位置, 这并不影响 switch 的功能, 如可以先出现 “ default : … “, 再出现 “ case ‘B’ : … “, 然后是 “ case ‘A’ : … “

  10. 可将相同操作的 case 语句及对应的常量表达式连续排序, 其对应操作的语句组及 break 只在最后一个 case 语句后出现


switch ( 表达式1 )
{
case 常用表达式 1:
case 常用表达式 2:
case 常用表达式 3: 语句组1; break;

... ...

case 常用表达式 n-1:
case 常用表达式 n: 语句组n; break;
default: 语句组 n+1;
}









作者: 我叫史迪奇
本文来自于: https://sdq3.link/C-if.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议