一个求二次方程的x值的程序

A program to find the x values of a quadratic equation

本文关键字:程序 二次方程 一个      更新时间:2023-10-16

给定a=1, b=5和c=6的值,x的值应该是-2和3,但下面的程序给出x的值为6和-11,这是不正确的。如果有人能指出这个程序出了什么问题,我将不胜感激。

#include<iostream.h>
#include<conio.h>
int main()
{
    char reply;
    int a,b,c,q,z;
    do
    {
        cout<<"Enter the value of a: ";
        cin>>a;
        cout<<"nEnter the value of b: ";
        cin>>b;
        cout<<"nEnter the value of c: ";
        cin>>c;
       q=(-b-(b*b-4*a*c)sqrt(b))/2/a;
       z=(-b+(b*b-4*a*c)sqrt(b))/2/a;
        cout<<"nThe values of x are "<<q<<" and "<<z;
        cout<<"nDo you want to find another values of x(y/n)?";
        cin>>reply;
    }
    while(reply=='y');
    getch();
    return 0;
}

^符号实际上是位异或运算符,而不是幂或指数运算符,因此b^2实际上是b xor 2。试试b*b吧。

如果你需要取一个底数为2以外的幂指数,你需要使用pow函数。

并使用sqrt函数(在<math.h>中)来计算平方根,而不是将数字提高到1/2的幂。

另外,a/b*c被解析为(a/b)*c,所以您需要括号:

   (...)/(2*a);

或做第二次分割:

   (...)/2/a;

变化

    q=(-b-(b^2-4*a*c)^1/2)/2*a;
    z=(-b+(b^2-4*a*c)^1/2)/2*a;

    q=(-b-(b^2-4*a*c)^1/2)/2/a;
    z=(-b+(b^2-4*a*c)^1/2)/2/a;

之后,将b^2更改为b*b (^xor,而不是power)和b^1/2sqrt(b) .

然后,用double代替int

首先,将所有的数据类型更改为double,否则1/2会给出0而不是0.5

第二,使用<cmath>头文件中的std::sqrt

则回忆公式,并正确计算。