【C语言】分支和循环(上)
【C语言】分支和循环(上)
- 1、if语句
- 1.2 else
- 1.3分支中包含多条语句
- 1.4嵌套if
- 1.5悬空else问题
- 2、关系操作符
- 3、条件操作符
- 4、逻辑操作符:与、或、非(取反)(&&,||,!)
- 4.1逻辑取反运算符
- 4.2逻辑 与 运算符
- 4.3逻辑或操作符
前言:C语言是一种结构化的设计语言,这里所指的结构包括:顺序结构、选择结构和循环结构。
接下来将介绍分支和循环结构,我们可以使用if、switch来实现分支结构,使用for、while、do while实现循环结构。
1、if语句
if语句的语法形式如下代码所示:
if( 表达式 ) 语句
表达式如果为真,则下面的语句执行,如果为假,则语句不执行。
在C语言中,0为假(不成立),语句不执行;**非0表示真(成立)**时,语句执行。
eg:输入一个整数,判断是的为奇数:
if语句原理图如下:
1.2 else
接上面例子所述,如果一个数不是奇数,那么就是偶数,如果任意一个整数,要怎么判断是奇数还是偶数呢?
这里就可以在if语句后面加上else,构成if…else语句,语法形式如下:
if( 表达式 ) 语句1 else 语句2
eg1:输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数:
eg2:输入一个年龄,≥18就输出:成年,否则输出:未成年:
1.3分支中包含多条语句
默认在if和else语句都只控制一条语句:
从上述示例中可以看出,不管是成年(age>=18)或者未成年(age int a = 0; int b = 5; if (a == 1) if (b == 5) printf("hello world.\n"); else printf("good afternoon.\n"); return 0; } int a = 0; int b = 5; if (a == 1) { if (b == 5) printf("hello world.\n"); else printf("good afternoon.\n"); } return 0; } int a = 0; int b = 5; if (a == 1) { if (b == 5) printf("hello world.\n"); } else { printf("good afternoon.\n"); } return 0; } p只要带上适当的大括号,代码的逻辑就会更加清晰,所以写代码的时候可以注意大括号的使用,使得代码可读性更高。/p h32、关系操作符/h3 pC语言用于比较的表达式,称为关系表达式,使用的运算符就称为关系操作符。/pp下面介绍6个基本常用的操作符:/p blockquote pre class="brush:python;toolbar:false" 大于运算符 = 大于等于运算符 25返回1,19>20返回0。
关系表达式中常常用于if和while结构来判断真假进行循环。
#include int main() { int num = 0; scanf("%d",&num); if(num % 5 == 0)//关系表达式运用在if语句中 printf("%d是5的倍数\n",num); return 0;
注意:相等运算符 ==与赋值运算符 = 是两个不一样的运算符,不要混淆。有时候,可能会不小心将相等运算符写成赋值运算符=,虽然可以运行,但得不到我们想要的效果。
if(x =5)
上述示例中,我们原本是想判断x是否与5相等,但是不小心写成了x=5.这个时候式子表示对变量x赋值为5,它的返回值为5(为真),所以if判断总是为真。
为了防止这种错误出现,我们可以将变量写在等号的右边。
if(5 =x)
如果把==写成了=的时候编译器就会报错。
在关系操作表达式中,多个关系运算符不宜连用。
eg:错误示范
a>b>c
解析上面的示范:
eg:输入一个年龄,如果年龄在18-36岁之间,我们称为青年。
3、条件操作符
条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:
exp1?exp2:exp3
条件操作符的计算逻辑是:如果exp1为真,则计算exp2,计算的结果就是整个表达式的结果。如果exp1为假,则计算exp3,计算的结果就是整个表达式的结果。
eg:使用条件操作符表示下列代码的逻辑:
参考解答:
eg2:使用条件表达式实现找两个数中的较大值:
4、逻辑操作符:与、或、非(取反)(&&,||,!)
逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:
- !:逻辑取反运算符(改变单个表达式的真假)
- &&:逻辑与运算符,表示并且的意思(全真为真,其余全假)
- ||:逻辑或运算符,就是或者的意思(两侧至少有一个为真,则整个为真)
注意:C语言中,非0表示真,0表示假
4.1逻辑取反运算符
eg:有一个变量flag,如果flag为假(0),要做什么事情,可以写如下代码:
如果flag为真,!flag为假,相反flag为假,!flag为真。
所以上述flag为假,取反后为真,执行if语句的代码。
4.2逻辑 与 运算符
&&就是与运算符,也是并且的意思,&&是一个双目操作符,使用的方式是a&&b,&&两边的表达式都是真的时候,整个表达式为真,只要有一个是假,则为假。
如果我们要表示6-8月是夏天,代码如何实现呢?
这里的month既要大于等于6,又要小于等于8,且同时必须满足。
4.3逻辑或操作符
||就是或运算符,也就是或者的意思,||也是一个双目操作符,使用的方式是a||b,||两边的表达式只要有一个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。
比如:我们说一年中月份是12月或者1月或者2月是冬天,那么我们怎么使用代码体现呢?