2、i的使用有问题,电脑不会在你*i的时候自动在一个数后面追加一个i的
3、最好定义主函数为int型,另外这个前面加else
下面裤搭掘是我给你修改的,供参考!
#include "iostream.h"
#include "math.h"
using namespace std
int main()
{
float a,b,c,d,x1,x2,rpart,ipart
cout<<"方程为a*x^2+b*x+c=0,请输入a、b、c的值"胡核<<endl
cin>>a>>b>>c
if (a==0)
{
if (b==0)
cout<<"方程无解"
else
{
x1=-c/b
cout<<"一元一次方程的根是"<<x1<<endl
}
}
else
{
d=b*b-4*a*c
if (d<0)
{
rpart=-b/(2*a)
ipart=sqrt(-d)/(2*a)
//x1=rpart+ipart*i
//x2=rpart-ipart*i
cout<<"方程有两个复根:x1="<<rpart<<"+"<<ipart<<"i"<<" x2="<<rpart<<"-"<<ipart<<"i"<<endl
}
else if (d==0)
{
x1=-b/(2*a)
cout<<"方程有两个枝滚相等的实根,x1=x2="<<x1<<endl
}
else
{
x1=(-b+sqrt(d))/(2*a)
x2=(-b-sqrt(d))/(2*a)
cout<<"方程有两个不相等的实根,x1="<<x1<<" x2="<<x2<<endl
}
}
getchar()
getchar()
return 0
}
# include <stdio.h># include <math.h>
void main()
{
double a
double b
double c
double delta
double x1
double x2
delta=b*b-4*a*c
printf("请依芦宴基次输入a,b,c的值(中间用空格间隔):")
scanf("%lf %lf %lf",&a,&b,&c)
if (delta>0)
{
x1=(-b+sqrt(delta))/2*a
x2=(-b-sqrt(delta))/2*a
printf("有两个解:x1=%lf,x2=%lf",x1,x2)
}
else if (delta==0)
{
x2=x1=(-b+sqrt(delta))/2*a
printf("有一个解:x1=x2=%lf",x1)
}
else if (delta<0)
{
printf("无解")
}
}
首先 你的祥雹输入状态好像有些不是英文状态 我已帮你改过
还陪谨有就是4ac 不能这样写
c语言环境没那么聪明
浮点数比较时不能这样比较,须设定一允许误差,在误差之内的就可认为相等有基神限的字长不能把小数精确的转化成2进制
If CSng(x + y) = 2.2 And CSng(x - y) = 0.2 Then
Text1.Text = x
Text2.Text = y
End If
这样就行了
小余1的数 都要这样比较
楼上的把精度缩小团锋滑到一位小数 我这里是把精度缩小为塌腊单精度
因为浮点小数 就算出来的差值实际不是0.2 你可以去试验一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)