选择结构的概述
概述
选择结构是一种程序控制结构,用于根据条件的成立与否,在程序执行过程中选择性地执行不同的代码块。也就是说,选择结构会根据某个条件的判断结果来决定程序是否执行某一段代码。
条件描述
条件判断表达式
也称为布尔表达式,是选择结构中用来判断条件是否成立的关键。它的结果只能是“真”或“假”。
条件判断表达式通常使用比较运算符、逻辑运算符和其他运算符组合而成。其中比较运算符用于比较两个值的大小或者相等性,逻辑运算符用于连接多个条件表达式,并执行与或非等逻辑操作。
关系运算符与关系表达式
关系运算符是用来比较两个值之间大小或者相等性的运算符。在选择结构中,常常使用关系运算符来构造关系表达式(也称为条件表达式或布尔表达式)
关系运算符包括以下几种:
- 相等性判断运算符(==),用于判断两个值是否相等。
- 不等性判断运算符(!=),用于判断两个值是否不相等。
- 大于运算符(>),用于判断左边的值是否大于右边的值。
- 小于运算符(<),用于判断左边的值是否小于右边的值。
- 大于等于运算符(>=),用于判断左边的值是否大于等于右边的值。
- 小于等于运算符(<=),用于判断左边的值是否小于等于右边的值。
关系表达式是由关系运算符和操作数(常量、变量、表达式)组成的表达式,其结果只能是“真”或“假”。关系表达式最常见的应用场景是条件语句中,用来判断一个条件是否成立。例如:
int a = 5;
int b = 3;
int result = (a > b); //result的值为1,表示真
在C语言中,关系表达式通常用于条件语句中,例如:
int age = 20;
if (age >= 18) {
printf("你已经成年了\n");
}
这段代码中,关系表达式 age >= 18 的值为真,因此if语句的条件成立,执行其中的printf语句。
需要注意的是,在C语言中,关系表达式的值为0或1,分别表示假和真。因此,在进行关系运算时,要特别注意关系表达式的数据类型,以避免出现意外的结果
逻辑运算符与逻辑表达式
逻辑运算符是用于组合和操作逻辑表达式的符号,常见的逻辑运算符包括:
- 逻辑与运算符(&&):同真为真,一假则假,当且仅当两个操作数都为真时,结果为真,否则结果为假。
- 逻辑或运算符(||):同假为假,一真为真,当且仅当两个操作数都为假时,结果为假,否则结果为真。
- 逻辑非运算符(!):真真假假,真假互换,用于取反操作,如果操作数为真则结果为假,如果操作数为假则结果为真。
逻辑表达式则是由一个或多个关系表达式和逻辑运算符组成的表达式,例如:
int a = 5;
int b = 3;
int c = 7;
if (a > b && b < c) {
printf("a大于b并且b小于c\n");
}
这段代码中,逻辑表达式 a > b && b < c 的值为真,因为a大于b并且b小于c,所以if语句的条件成立,执行其中的printf语句。
为了直接显示逻辑运算符的关系,如图下:
//与运算
0 & 0=0;0 & 1=0;1 & 0=0;1 & 1=1;
//或运算
0 | 0=0;1 | 0=1;0 | 1=1;1 | 1=1;
//
if语句的简单运用
if语句的基本格式
if (condition) { //condition可以是任意的条件表达式
// 执行语句
}
下面是一个简单的if语句的示例,用于判断一个数是否为偶数:
#include <stdio.h>
int main() {
int x = 10;
if (x % 2 == 0) {
printf("%d是偶数\n", x);
}
return 0;
}
在上述代码中,if语句的条件表达式x % 2 == 0
判断x
除以2的余数是否为0,如果是,则说明x
是偶数,就会执行if语句中的代码块,打印输出x是偶数
。
if语句的执行过程
if...else语句的运用
if...else语句的基本格式
if (condition) {
// condition为true时执行的语句
} else {
// condition为false时执行的语句
}
在执行if...else语句时,先判断condition
的值是否为真(非0)。如果为真,则执行if语句后的代码块;如果为假,则执行else语句后的代码块。
例如,下面的代码判断一个数是否为偶数,如果是,则输出x是偶数
,否则输出x是奇数
:
#include <stdio.h>
int main() {
int x = 10;
if (x % 2 == 0) {
printf("%d是偶数\n", x);
} else {
printf("%d是奇数\n", x);
}
return 0;
}
需要注意的是,if...else语句中的条件表达式condition
只会执行其中一个代码块,condition
为真时执行if
代码块,condition
为假时执行else
代码块。
if...else语句的执行过程
多分支if语句的运用
多分支if语句基本格式
if (条件1) {
// 条件1成立时要执行的代码
} else if (条件2) {
// 条件1不成立,条件2成立时要执行的代码
} else if (条件3) {
// 条件1和条件2都不成立,条件3成立时要执行的代码
} else {
// 所有条件都不成立时要执行的代码
}
多分支if语句可以应用于需要根据不同情况采取不同行动的情况,例如:
score = 90
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
上述代码中,我们根据不同的成绩段打印不同的评价,比如成绩在90分以上就是“优秀”,在80-89分之间就是“良好”,在60-79分之间就是“及格”,60分以下就是“不及格”。 多分支if语句的形式简单明了,容易理解和修改,是常用的基本代码结构之一。
多分支if语句执行过程
switch语句的运用
switch语句基本格式
switch (expression) {
case constant1 :
statement(s);
break;
case constant2 :
statement(s);
break;
default :
statement(s);
}
其中:
expression
通常是一个变量,它的值会在执行switch
语句前被求出。case
后面的constant1
,constant2
等代表可能的值。这些值必须是整数或者能够被评估为整数的表达式(如字符)。statement(s)
是当某个case
被选中的时候需要执行的语句。break
语句是用来结束当前的case
代码块,并跳出switch
语句。如果不加break
,程序会继续执行下一个case
代码块,直到遇到break
或者switch
语句结束。default
代码块是可选的,当所有的case
都不匹配的时候执行。
下面是一个switch
语句的示例:
#include <stdio.h>
int main () {
int grade = 'B';
switch(grade) {
case 'A':
printf("Excellent!\n" );
break;
case 'B':
case 'C':
printf("Well done\n" );
break;
case 'D':
printf("You passed\n" );
break;
case 'F':
printf("Better try again\n" );
break;
default:
printf("Invalid grade\n" );
}
return 0;
}
上述代码中,我们定义了一个变量grade
的值为'B'
,然后使用switch
语句根据不同的case
执行不同的代码块。由于case 'B'
和case 'C'
的代码块是相同的,所以它们可以合并在一起,用逗号隔开。
执行上述代码,输出为Well done
,表示grade
的值为'B'
或'C'
时执行了该代码块。
文章到此一游,😜