C语言上结构化的程序设计语言,分为顺序结构,选择结构,循环结构。该文章主要介绍的是选择结构和循环结构,以下为正文:
1.if语句
1.1if
if语句的语法形式如下:
if ( 表达式 )语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏ 。
在C语言中,0为假,非0表示真。
1.2 else
else表示除if中表达式之外的结果,语法形式如下:
if ( 表达式 )语句 1else语句2
例子: 输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数。
# include <stdio.h>int main (){int num = 0 ;scanf ( "%d" , &num);if (num % 2 == 1 )printf ( "%d 是奇数 \n" , num);elseprintf ( "%d 是偶数 \n" , num);return 0 ;}
1.3分支中包含多条语句
if只能控制一条语句,如果想让if控制多条语句,可以使用{},如下所示:
if(表达式)
{
语句1
语句2
语句3
}
1.4嵌套if
# include <stdio.h>int main (){int num = 0 ;scanf ( "%d" , &num);if (num == 0 )printf ( " 输⼊的数字是 0\n" );else if(num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构printf("输⼊的数字是正数\n");elseprintf("输⼊的数字是负数\n");return 0 ;
上面红色部分就是嵌套在else中if语句。
不仅有以上的形式,还有如下的形式:
if(表达式)
{
if(表达式)
语句1
else
语句2
}
1.5悬空else问题
# include <stdio.h>int main (){int a = 0 ;int b = 2 ;if (a == 1 )if (b == 2 )printf ( "hehe\n" );elseprintf ( "haha\n" );return 0 ;}
2.关系操作符
i < j < k
(i < j) < k
i < j && j < k
3.条件操作符
exp1 ? exp2 : exp3
4.逻辑操作符:&&,||,!
• ! :逻辑取反运算符(改变单个表达式的真假)。
• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
5.switch语句
switch (expression){case value1: statementcase value2: statementdefault : statement}
注意:
5.1switch语句的default
在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹 配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊default ⼦句。
switch (expression){case value1: statementcase value2: statementdefault : statement}
5.2switch语句中的case和default的顺序问题
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗? 其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实 际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的。
6.while循环
6.1while的语法结构
while ( 表达式 )语句 ; // 如果循环体想包含更多的语句,可以加上⼤括号
while语句是可以实现循环效果的。
6.2while语句的执行流程
以下为while语句的执行流程图:
6.3while循环的实践
例子:在屏幕上打印1到10的值
# include <stdio.h>int main (){int i = 1 ;while (i<= 10 ){printf ( "%d " , i);i = i+ 1 ;}return 0 ;}
7.for循环
7.1语法形式
for ( 表达式 1 ; 表达式 2 ; 表达式 3 )、语句; // 如果循环体想 包含更多的语句,可以加上⼤括号
7.2 for循环的执行流程
先执行表达1:初始化,接着表达式2:判断,如果为假则结束,如果为真就执行语句,接着执行表达式3:调整。
7.3 for循环的实践
例子:在屏幕上打印1到10的值
# include <stdio.h>int main (){int i = 0 ;for (i= 1 ; i<= 10 ; i++){printf ( "%d " , i);}return 0 ;}
7.4 while循环和for循环的对比
8.do-while 循环
8.1语法形式
do语句;while ( 表达式 ) ;
8.2 do while循环的执行流程
8.3 do while循环的实例
# include <stdio.h>int main (){int i = 1 ;do{printf ( "%d " , i);i = i + 1 ;} while (i<= 10 );return 0 ;}
⼀般 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些。
9.break和continue语句
9.1while循环中的break和continue
9.1.1 break举例
# include <stdio.h>int main (){int i = 1 ;while (i<= 10 ){if (i == 5 )break ; // 当 i 等于 5 后,就执⾏ break ,循环就终⽌了printf ( "%d " , i);i = i+ 1 ;}return 0 ;}
结果是只打印了1 2 3 4
9.1.2 continue举例
# include <stdio.h>int main (){int i = 1 ;while (i<= 10 ){if (i == 5 )continue ;// 当 i 等于 5 后,就执⾏ continue ,直接跳过 continue 的代码,去循环的判断的地⽅// 因为这⾥跳过了 i = i+1 ,所以 i ⼀直为 5 ,程序陷⼊和死循环printf ( "%d " , i);i = i+ 1 ;}return 0 ;
9.2 for循环中的break和continue
break,continue的操作和作用和while中差不多
注意:for中的continue是跳过continue后的代码,然后来到for中的表达式3。
9.3 do while循环中的break和continue
10.goto语句
C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数 内跳转到设置好的标号处
例如:
# include <stdio.h>int main (){printf ( "hehe\n" );goto next:printf ( "haha\n" );next:printf ( " 跳过了 haha 的打印 \n" );return 0 ;}