在上一篇中,我们介绍了控制结构之顺序结构的概念与应用。顺序结构是程序执行的基础,而选择结构则允许程序根据条件的不同走不同的路径,从而实现更复杂的逻辑。这一节我们将重点讨论C语言中的选择结构,包括if
语句和switch
语句。
一、if语句
if
语句是选择结构中最基本的形式,它用于根据条件表达式的真值来决定是否执行某段代码。if
语句的基本语法结构如下:
示例
以下是一个简单的例子,判断一个数是否为正数:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #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
结构,以处理条件为假时的情形:
1 2 3 4 5
| if (条件表达式) { } else { }
|
示例
下面的例子中,如果输入的数是负数,则输出“您输入的数是负数。”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #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
结构:
1 2 3 4 5 6 7
| if (条件表达式1) { } else if (条件表达式2) { } else { }
|
示例
以下例子将根据用户输入的数判断其是否为正数、负数或零:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #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
语句的基本语法如下:
1 2 3 4 5 6 7 8 9 10 11
| switch (表达式) { case 常量1: break; case 常量2: break; ... default: }
|
示例
下面的例子根据用户输入的数字(1-3)输出对应的文本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #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
语句进行简单的计算器功能,支持加减乘除:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #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
语句。通过循环结构,我们可以在特定条件下重复执行代码,从而实现更复杂的逻辑运算。