17 数据结构与算法之栈与队列

17 数据结构与算法之栈与队列

在上一章中,我们讨论了数组与链表,它们是最基本的数据存储结构。接下来,我们将深入探讨两个非常重要的数据结构:队列。这两个数据结构常用于管理数据的访问顺序,为算法提供支持,尤其是在解

阅读更多
17 控制结构之选择结构(if、switch)

17 控制结构之选择结构(if、switch)

在上一篇中,我们介绍了控制结构之顺序结构的概念与应用。顺序结构是程序执行的基础,而选择结构则允许程序根据条件的不同走不同的路径,从而实现更复杂的逻辑。这一节我们将重点讨论C语言中的选择结构,包括<!-- more -->if语句和switch语句。

一、if语句

if语句是选择结构中最基本的形式,它用于根据条件表达式的真值来决定是否执行某段代码。if语句的基本语法结构如下:

1
2
3
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) {
// 执行代码块1
} else if (条件表达式2) {
// 执行代码块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:
// 处理case常量1的代码
break;
case 常量2:
// 处理case常量2的代码
break;
...
default:
// 当没有匹配到任何case时执行的代码
}

示例

下面的例子根据用户输入的数字(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语言中的选择结构,包括了ifif-elseif-else if-else以及switch语句的基本用法和应用案例。选择结构为程序赋予了条件判断的能力,使得程序能够根据不同的输入和状态做出相应的处理。

在下一篇中,我们将继续讨论控制结构之循环结构,包括forwhiledo-while语句。通过循环结构,我们可以在特定条件下重复执行代码,从而实现更复杂的逻辑运算。

18 数据结构与算法之树与图

18 数据结构与算法之树与图

在上一篇中,我们讨论了 队列 这两种重要的数据结构。本篇将深入探讨 ,这两者在计算机科学中扮演着至关重要的角色,尤其是在表示层次结构和复杂关系时。

5.3

阅读更多
控制结构之循环结构

控制结构之循环结构

在上篇中,我们探讨了控制结构的选择结构,包括 ifswitch,这些结构使我们能够根据条件执行不同的代码块。在本篇中,我们将深入了解循环结构,它是编程中非常重要的一个部分,允许我们重

阅读更多