分支语句和循环语句
分支语句
if
switch
循环语句
while
for
do while
goto语句
1. 什么是语句?
C 语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语 言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句: if 语句、 switch 语句;
2. 循环执行语句: do while 语句、 while 语句、 for 语句;
3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。
2. 分支语句(选择结构)
如果你好好学习,校招时拿一个好 offer ,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
这就是选择!
2.1 if语句
那 if 语句的语法结构是怎么样的呢?
语法结构:
if ( 表达式 ) 语句 ; if ( 表达式 ) 语句 1 ; else 语句 2 ; // 多分支 if ( 表达式 1 ) 语句 1 ; else if ( 表达式 2 ) 语句 2 ; else 语句 3 ; 演示代码: #include <stdio.h> // 代码 1 int main () { int age = 0 ; scanf ( "%d" , & age ); if ( age < 18 ) { printf ( " 未成年 \n" ); } } // 代码 2 #include <stdio.h> int main () { int age = 0 ; scanf ( "%d" , & age ); if ( age < 18 ) { printf ( " 未成年 \n" ); } else { printf ( " 成年 \n" ); } } // 代码 3 #include <stdio.h> int main () { int age = 0 ; scanf ( "%d" , & age ); if ( age < 18 ) { printf ( " 少年 \n" ); } else if ( age >= 18 && age < 30 ) { printf ( " 青年 \n" ); } else if ( age >= 30 && age < 50 ) { printf ( " 中年 \n" ); } else if ( age >= 50 && age < 80 ) { printf ( " 老年 \n" ); } else { printf ( " 老寿星 \n" ); } }
解释一下:
如果表达式的结果为真,则语句执行。
在 C 语言中如何表示真假?
0 表示假,非 0 表示真。
左边这个程序是怎么算的呢?其实我们以输入10为例,10输入进去后,先是 18<=10 为假 然后程序变为 0<40 ,然后0<40为真变为1,恒成立程序,进入程序内部。所以不要这么写 ,要写成:
如果条件成立,要执行多条语句,怎应该使用代码块。
#include <stdio.h> int main () { if ( 表达式 ) { 语句列表 1 ; } else { 语句列表 2 ; } return 0 ; }
这里的一对 { } 就是一个代码块。
2.1.1 悬空else
当你写了这个代码:
#include <stdio.h> int main () { int a = 0 ; int b = 2 ; if ( a == 1 ) if ( b == 2 ) printf ( "hehe\n" ); else printf ( "haha\n" ); return 0 ; }
改正:
// 适当的使用 {} 可以使代码的逻辑更加清楚。
// 代码风格很重要
#include <stdio.h> int main () { int a = 0 ; int b = 2 ; if ( a == 1 ) { if ( b == 2 ) { printf ( "hehe\n" ); } } else { printf ( "haha\n" ); } return 0 ; }
else 的匹配 : else 是和它离的最近的 if 匹配的。
2.1.2 if书写形式的对比
// 代码 1 if ( condition ) { return x ; } return y ; // 代码 2 if ( condition ) { return x ; } else { return y ; } // 代码 3 int num = 1 ; if ( num == 5 ) { printf ( "hehe\n" ); } // 代码 4 int num = 1 ; if ( 5 == num ) { printf ( "hehe\n" ); }
代码 2 和代码 4 更好,逻辑更加清晰,不容易出错。
这样的结果是打印出了 hehe 违背初始的意愿,所以我们一般用更好一点的方式去写
像这样
这个时候如果写错了,编译器会报错的,更有利于我们发现问题。 这个写法适用于一个变量与一个常量相不相等的情况下(这将是一个很好的编程习惯)。