选择结构
- 1.if 语句
- 1.1.if
- 1.2.if-else
- 1.3.if的嵌套
- 举例
- 示例
- 结果
- 分析
- 举例
- 示例
- 结果
- 2.switch语句
- 举例
- 示例
- 结果
- 分析
C语言中的选择结构用于根据特定条件执行不同的代码段。选择结构是C语言编程中实现程序逻辑流程控制的基础,它们能够使程序根据不同的输入或条件执行不同的操作。选择结构主要包括
if
语句、
switch
语句等。
1.if 语句
1.1.if
if
语句是C语言中最基本的选择结构之一,它允许程序根据条件的真假来执行不同的代码块。
if
语句的基本形式如下:
if (条件表达式) {
// 条件为真时执行的代码块
}
当条件表达式为真(即非零)时,if
语句后面的代码块将被执行;如果条件表达式为假(即零),则跳过代码块,继续执行后面的代码。
1.2.if-else
if-else
语句是C语言中的一种基本选择结构,它允许程序根据条件的真假来执行两个不同的代码块。if-else
语句的通用形式如下:
if (条件表达式) {
// 条件为真时执行的代码块
} else {
// 条件为假时执行的代码块
}
当程序执行到if-else
语句时,首先会评估条件表达式。如果条件表达式为真(即非零),则执行if
后面的代码块;如果条件表达式为假(即零),则执行else
后面的代码块。在if-else
结构中,总是只有一个代码块会被执行,然后程序继续执行if-else
语句之后的代码。
1.3.if的嵌套
在C语言中,if
语句的嵌套是指在一个if
语句的主体内又包含了一个或多个if
语句。这种结构允许程序进行更复杂的条件判断。下面是if
语句嵌套的基本形式:
if (条件表达式1) {
// 当条件表达式1为真时执行的代码块
if (条件表达式2) {
// 当条件表达式2也为真时执行的代码块
}
}
在这个例子中,内部的if
语句只有在外部的if
语句的条件表达式为真时才会被执行。嵌套的if
语句可以包含else
子句,形成if-else
嵌套:
if (条件表达式1) {
// 当条件表达式1为真时执行的代码块
if (条件表达式2) {
// 当条件表达式2也为真时执行的代码块
} else {
// 当条件表达式2为假时执行的代码块
}
} else {
// 当条件表达式1为假时执行的代码块
}
在嵌套的if-else
结构中,每个else
子句都与最近的未配对的if
语句关联。这意味着上面的代码中,内部的else
子句与内部的if
语句配对,而不是与外部的if
语句配对。
举例
示例
当然,下面是一个简单的if else
嵌套例子,用于判断一个学生在某门课程中的成绩等级:
#include <stdio.h>
int main() {
int score = 82;
if (score >= 60) {
// 如果分数大于等于60,则及格
printf("你通过了考试\n");
if (score >= 90) {
// 如果分数大于等于90,则成绩为A
printf("你的成绩是A\n");
} else if (score >= 80) {
// 如果分数大于等于80,则成绩为B
printf("你的成绩是B\n");
} else {
// 否则,成绩为C
printf("你的成绩是C\n");
}
} else {
// 如果分数小于60,则不及格
printf("你没有通过考试\n");
}
return 0;
}
结果
分析
在这个例子中,我们首先检查学生的分数是否及格(即是否大于等于60)。如果及格,我们再根据分数的不同区间,使用嵌套的if else
语句来判断成绩等级。如果分数大于等于90,则成绩为A;如果分数在80到89之间,则成绩为B;如果分数在60到79之间,则成绩为C。如果学生的分数不及格,则直接打印出不及格的信息。
举例
示例
#include <stdio.h>
int main() {
int a = 1;
int b = 2;
if (a > b){
printf("a大于b\n");
}else {
printf("a小于b\n");
}
return 0;
}
结果
2.switch语句
switch
语句是C语言中的一种多分支选择结构,它允许程序根据一个变量的值选择多个代码块中的一个来执行。switch
语句通常用于处理具有多个明确值的条件,比如枚举值、字符、整数等。
switch
语句的通用形式如下:
switch (表达式) {
case 常量表达式1:
// 当表达式的结果与常量表达式1匹配时执行的代码块
break; // 跳出switch语句
case 常量表达式2:
// 当表达式的结果与常量表达式2匹配时执行的代码块
break; // 跳出switch语句
// ...
case 常量表达式N:
// 当表达式的结果与常量表达式N匹配时执行的代码块
break; // 跳出switch语句
default:
// 当表达式的结果与任何case都不匹配时执行的代码块
}
在switch
语句中,表达式的结果会与case
标签后的常量表达式进行比较。如果匹配成功,则执行相应的代码块。每个case
标签必须是唯一的,并且是一个常量表达式或枚举常量。
break
语句用于终止switch
语句,防止代码自动地继续执行到下一个case
。如果没有break
,会发生“fall through”,即继续执行下一个case
直到遇到break
或switch
结束。default
部分是可选的,当表达式的结果与所有case
都不匹配时,会执行default
后面的代码块。
举例
示例
#include <stdio.h>
int main() {
char grade = 'B';
switch (grade) {
case 'A':
printf("优秀\n");
break;
case 'B':
printf("良好\n");
break;
case 'C':
printf("中等\n");
break;
case 'D':
printf("不及格\n");
break;
case 'F':
printf("差\n");
break;
default:
printf("输入错误\n");
}
return 0;
}
结果
分析
在这个例子中,程序根据字符变量grade
的值打印出不同的评价。如果grade
的值是’A’,则打印”优秀";如果值是’B’,则打印"良好",以此类推。如果grade
的值不是’A’到’F’之间的任何一个字符,则执行default
部分的代码块,打印"输入错误"。
switch
语句提供了一种清晰的方式来处理多个条件,特别是当这些条件是基于同一个变量的不同值时。它比使用多个if else
语句更加简洁和易于理解。