17 控制结构之选择结构(if、switch)
在上一篇中,我们介绍了控制结构之顺序结构的概念与应用。顺序结构是程序执行的基础,而选择结构则允许程序根据条件的不同走不同的路径,从而实现更复杂的逻辑。这一节我们将重点讨论C语言中的选择结构,包括if
语句和switch
语句。
一、if语句
if
语句是选择结构中最基本的形式,它用于根据条件表达式的真值来决定是否执行某段代码。if
语句的基本语法结构如下:
if (条件表达式) {
// 如果条件为真执行的代码
}
示例
以下是一个简单的例子,判断一个数是否为正数:
#include <stdio.h>
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
if (number > 0) {
printf("您输入的数是正数。\n");
}
return 0;
}
在这个例子中,如果用户输入的 number
大于0,程序将输出“您输入的数是正数。”
if-else语句
我们可以将if
语句扩展为if-else
结构,以处理条件为假时的情形:
if (条件表达式) {
// 如果条件为真执行的代码
} else {
// 如果条件为假执行的代码
}
示例
下面的例子中,如果输入的数是负数,则输出“您输入的数是负数。”
#include <stdio.h>
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
if (number > 0) {
printf("您输入的数是正数。\n");
} else {
printf("您输入的数是负数或零。\n");
}
return 0;
}
多重选择:if-else if-else
当需要处理多个条件时,可以使用if-else if-else
结构:
if (条件表达式1) {
// 执行代码块1
} else if (条件表达式2) {
// 执行代码块2
} else {
// 执行其他代码块
}
示例
以下例子将根据用户输入的数判断其是否为正数、负数或零:
#include <stdio.h>
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
if (number > 0) {
printf("您输入的数是正数。\n");
} else if (number < 0) {
printf("您输入的数是负数。\n");
} else {
printf("您输入的数是零。\n");
}
return 0;
}
二、switch语句
switch
语句提供了一种多分支选择的方式,相对于if
语句,在处理多个条件时更为简洁明了。switch
语句的基本语法如下:
switch (表达式) {
case 常量1:
// 处理case常量1的代码
break;
case 常量2:
// 处理case常量2的代码
break;
...
default:
// 当没有匹配到任何case时执行的代码
}
示例
下面的例子根据用户输入的数字(1-3)输出对应的文本:
#include <stdio.h>
int main() {
int choice;
printf("请输入一个数字 (1-3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("您选择了第一项。\n");
break;
case 2:
printf("您选择了第二项。\n");
break;
case 3:
printf("您选择了第三项。\n");
break;
default:
printf("输入无效,请输入1-3之间的数字。\n");
break;
}
return 0;
}
在这个例子中,程序根据用户输入的choice
值输出对应文本。如果输入的值不在1到3之间,则输出“输入无效”。
注意事项
break
语句用于结束switch
的执行,防止继续执行后面的case
。- 如果多个
case
有相同的处理逻辑,可以合并多个case
语句。
参考示例
以下是一个更复杂的示例,使用switch
语句进行简单的计算器功能,支持加减乘除:
#include <stdio.h>
int main() {
char operator;
double num1, num2, result;
printf("请输入两个数 (以空格分隔): ");
scanf("%lf %lf", &num1, &num2);
printf("请输入运算符 (+, -, *, /): ");
scanf(" %c", &operator);
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
printf("错误:除数不能为零。\n");
return 1;
}
break;
default:
printf("无效的运算符。\n");
return 1;
}
printf("结果: %.2lf\n", result);
return 0;
}
小结
在本节中,我们深入探讨了C语言中的选择结构,包括了if
、if-else
、if-else if-else
以及switch
语句的基本用法和应用案例。选择结构为程序赋予了条件判断的能力,使得程序能够根据不同的输入和状态做出相应的处理。
在下一篇中,我们将继续讨论控制结构之循环结构,包括for
、while
和do-while
语句。通过循环结构,我们可以在特定条件下重复执行代码,从而实现更复杂的逻辑运算。