#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
}