第4章 选择结构程序设计
在程序开发中,我们不仅需要按顺序执行语句,还经常需要根据条件判断来选择不同的执行路径。第3章讨论了顺序结构的程序设计,而本章将深入到选择结构的程序设计。选择结构允许我们基于条件来决定程序的执行流程。
4.1 选择结构和条件判断
在现实生活和程序设计中,我们常常面临需要做出决策的情况。例如,驾驶时遇到岔路口需要选择向左还是向右;在程序设计中,我们可能需要根据用户的输入或计算的结果来决定接下来的操作。
实际应用示例
-
基于条件的执行:
- 如果今天是周末,我们可能计划外出。
- 如果用户的账户余额不足,显示错误消息。
-
数学问题中的应用:
- 对于一元二次方程 𝑎𝑥2+𝑏𝑥+𝑐=0ax2+bx+c=0,仅当 𝑏2−4𝑎𝑐≥0b2−4ac≥0 时,我们才能计算出实数解。
选择语句的类型
C 语言提供了两种主要的选择语句:
- if 语句:用于在两个选项之间做选择。
- switch 语句:适用于多选项的情况。
示例:if 语句的使用
考虑一个简单的例子,如果用户输入的数字是正数,则输出该数字;如果是负数,则输出其绝对值。
#include <stdio.h>
int main() {
int x;
printf("Enter a number: ");
scanf("%d", &x);
if (x >= 0)
printf("The number is: %d\n", x);
else
printf("The number is: %d\n", -x);
return 0;
}
流程图解释
流程图可以帮助我们理解选择结构的逻辑。例如,决定驾车方向的流程图可能包括一个判断节点,根据目的地是上海还是沈阳来选择不同的路线。
扩展:解决复杂问题
通过以上基础,我们可以处理更复杂的决策问题,如通过输入的参数判断并计算一元二次方程的解。这不仅涉及基础的 if 语句,也可能涉及嵌套的选择结构,以处理更多的条件和可能性。
实际编程示例
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, discriminant, root1, root2;
printf("Enter coefficients a, b and c: ");
scanf("%lf %lf %lf", &a, &b, &c);
discriminant = b*b - 4*a*c;
if (discriminant < 0) {
printf("No real roots.\n");
} else {
root1 = (-b + sqrt(discriminant)) / (2*a);
root2 = (-b - sqrt(discriminant)) / (2*a);
printf("Real roots: %.2f and %.2f\n", root1, root2);
}
return 0;
}
在此程序中,我们首先检查判别式以确定方程是否有实数解。这种类型的选择结构是编程中决策逻辑的核心。
结语
通过本章的学习,读者应能够掌握在C语言中如何使用选择结构来编写更具逻辑和决策能力的程序。理解并正确应用这些结构,是成为一名有效程序员的关键步骤。