C语言编程,求一元二次方程 ax2+bx+c=0 的解,谢谢

Python013

C语言编程,求一元二次方程 ax2+bx+c=0 的解,谢谢,第1张

#include<iostream>

#include<cmath>

using namespace std

int main()

{

for (int i=0i<2i++)

{

double a,b,c,delta,p,q

cin>>a>>b>>c

delta=b*b-4*a*c

p=-b/(2*a)

q=sqrt(fabs(delta))/(2*a)

if (delta>=0)

cout<<p+q<<endl<<p-q<<endl

else

{

cout<<p<<"+j"<<q

cout<<endl<<p<<"-j"<<q<<endl

}

}

return 0

}

扩展资料:

return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。

如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

如果函数名前有返回类型定义,如int,double等就必须有返回值,而如果是void型,则可以不写return,但这时即使写了也无法返回数值。

#include<stdio.h>

#include<math.h>

int main ()

{

double a,b,c,d,p

printf("请输入a,b,c 的值:")

scanf("%lf%lf%lf",&a,&b,&c)

if(a==0)

printf("不是二次方程")

else

{

d=b*b-4*a*c

if(d==0)

{

printf("有两个相等的根\nx=%7.2lf\n",-b/(2*a))

}

if (d>0)

{

printf("有两个不相等的根\nX1=%7.2lf\nX2=%7.2lf\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a))

}

if(d<0)

{

p=sqrt(-d/(2*a))

printf("有两个共轭复根\nX1=%7.2lfi-%7.2lf\nX2=%7.2lfi-%7.2lf\n",p,b/2,-p,b/2)

}

}     

return 0

}

扩展资料:

scanf函数用法:

scanf("输入控制符",输入参数)

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

#include <stdio.h>

#include <math.h>

int main()

{

float a,b,c,dis,x1,x2

printf("请输入a,b,c的值: ")

scanf("%f %f %f",&a,&b,&c)

dis=b*b-4*a*c

if(dis<0)

{

printf("该函数无实根。\n")

return 0

}

else if(dis==0)

{

x1=x2=(-b)/(a*a)

printf("该函数有两个相等的实根:\n")

}

else

{

x1=(-b+sqrt(dis))/(2*a)

x2=(-b-sqrt(dis))/(2*a)

printf("该函数有两个不等的实根:")

}

printf("x1=%f x2=%f\n",x1,x2)

return 0

}