Pascal 实现一元二次方程求解:含代码、解释与复杂度分析
```pascal program QuadraticEquation; uses SysUtils; var a, b, c, delta, x1, x2: real; begin // 读入 a, b, c 的值 readln(a, b, c); // 计算判别式 delta delta := b * b - 4 * a * c; if delta > 0 then begin // 存在两个不同的解 x1 := (-b + Sqrt(delta)) / (2 * a); x2 := (-b - Sqrt(delta)) / (2 * a); Write('x1=', FloatToStrF(x1, ffFixed, 15, 2), ' x2=', FloatToStrF(x2, ffFixed, 15, 2)); end else if delta = 0 then begin // 存在一个解 x1 := -b / (2 * a); Write('x1=', FloatToStrF(x1, ffFixed, 15, 2)); end else begin // 无解 Write('No answer'); end; end. ``` 代码解释: 1. 变量声明:定义了 `a`, `b`, `c` 用于存储输入的系数,`delta` 用于存储判别式的值,`x1`, `x2` 用于存储方程的解,这些变量均为 `real` 类型(Pascal 中表示浮点数)。 2. 输入读取:使用 `readln` 函数从标准输入读取三个浮点数,分别赋值给 `a`, `b`, `c`。 3. 判别式计算:根据公式 `delta := b * b - 4 * a * c` 计算判别式的值。 4. 根据判别式的值进行判断: - 如果 `delta > 0`,说明方程有两个不同的解,使用求根公式计算 `x1` 和 `x2`,并使用 `FloatToStrF` 函数将结果转换为保留两位小数的字符串,按照指定格式输出。 - 如果 `delta = 0`,说明方程有一个解,使用求根公式计算 `x1`,同样使用 `FloatToStrF` 函数将结果转换为保留两位小数的字符串,按照指定格式输出。 - 如果 `delta < 0`,说明方程无解,输出 `"No answer"`。 复杂度分析: - 时间复杂度:$O(1)$,因为只进行了常数级的计算。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 614点数解答 | 2025-12-10 17:25:40]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)352
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)65
- Java 实现计算所需最少钱币张数和个数(字节豆包 | 590点数解答 | 2026-03-05 21:44:59)20
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)274
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)271
- 求解 1 至 n 内第 k 大孤独数:质数与余数的巧妙探寻(字节豆包 | 298点数解答 | 2025-11-10 20:01:57)163
- 巧判小朋友同桌意愿:满足需求还是无解难题?(字节豆包 | 599点数解答 | 2025-11-16 20:06:12)73
- 巧用代码判断:能否让 2n 个小朋友都拥有满意同桌?(字节豆包 | 445点数解答 | 2025-11-16 20:07:02)83
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)475
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)361
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)336