南京理工大学MOOC程序设计基础(Ⅰ)SPOC | 第4章编程作业1答案详细解答

4.1-1二元一次方程的求解(100分)

题目内容:

求一元二次方程ax2+bx+c=0的根。根据提示输入系数a、b、c的值,显示方程的根。注意a为0、b为0、实数根、复数根等不同情况。

·输入格式:

依次输入a、b和c的 值

·输出格式:

两个根之间用一个空格分隔

#include <iostream> // 引入输入输出流库
#include <cmath>    // 引入数学库,用于数学函数如sqrt

using namespace std; // 使用标准命名空间

int main(void) {
    float a, b, c; // 定义浮点变量a, b, c,用于存储方程的系数和常数项

    cin >> a >> b >> c; // 从标准输入读取a, b, c的值

    // 检查是否是无解方程(即a和b都为0)
    if (a == 0 && b == 0) {
        cout << "Not an equation."; // 输出"Not an equation."
    } else {
        // 如果a为0,说明这是一个一元一次方程
        if (a == 0) {
            cout << "x=" << -c / b; // 输出方程的解x = -c/b
        } else {
            // 检查方程的判别式是否非负,判别式为b^2 - 4ac
            if (b * b - 4 * a * c >= 0) {
                // 方程有实数解
                cout << "x1=" << (-b + sqrt(b * b - 4 * a * c)) / (2 * a) << " "; // 输出第一个实数解x1
                cout << "x2=" << (-b - sqrt(b * b - 4 * a * c)) / (2 * a); // 输出第二个实数解x2
            } else {
                // 方程没有实数解,输出复数解
                cout << "x1=" << (-b / (2 * a)) << "+" << sqrt(4 * a * c - b * b) / (2 * a) << "i" << " "; // 输出第一个复数解x1
                cout << "x2=" << (-b / (2 * a)) << "-" << sqrt(4 * a * c - b * b) / (2 * a) << "i"; // 输出第二个复数解x2
            }
        }
    }

    return 0; // 程序正常结束
}

解释

  1. 变量定义

    • float a, b, c;:定义三个浮点数变量,用于存储方程的系数和常数项。
  2. 读取输入

    • cin >> a >> b >> c;:从用户输入读取三个浮点数。
  3. 方程分类与求解

    • 无解情况
      • if (a == 0 && b == 0):如果 a 和 b 都是0,则不是一个方程。
    • 一元一次方程
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值