C语言编程问题,初学者,麻烦简单点,可以看懂的,谢谢(*°∀°)=3?
系数a、b、c的值从键盘输入。当程序无解时输出“No solusions!”;当程序有两个解时输出两个解;当程序有1个解时输出1个解。
(开平方可以调用函数sqrt,并且需要包含头文件math.h,示例如下)
#include <stdio.h>
#include <math.h>
int main()
{
double c;
int d;
d = 10;
c = sqrt(d);
printf("10的开方等于=%lf", c);
} 展开
首先分两种情况:
一、a为0,bx+c=0,求得一解。
二、a不为0,按照一元二次方程公式:
当判别式b^2-4ac,>0则两个解,=0则一个解,<0则无解。
最后,代入公式求解。
函数参数:a,b,c及存放结果的数组x。返回解的个数。
下面是代码:
#include <stdio.h>
#include <math.h>
int fun(double a,double b,double c,double *x);
int main()
{
int n;
double a,b,c,x[2];
printf("请输入a,b,c的值:"),scanf("%lf%lf%lf",&a,&b,&c);
n=fun(a,b,c,x);
printf("一元二次方程%.2lfx^2+%.2lfx+%.2lf=0,",a,b,c);
switch(n)
{
case 0: printf("无解!\n");break;
case 1: printf("一个解:x=%lf!\n",x[0]);break;
case 2: printf("两个解:x1=%lf,x2=%lf!\n",x[0],x[1]);break;
}
return 0;
}
int fun(double a,double b,double c,double *x)
{
double delta;
if(a==0)
{
x[0]=-1*c/b;
return 1;
}
delta=b*b-4*a*c;
if(delta<0) return 0;
if(delta==0)
{
x[0]=-1*b/(2*a);
return 1;
}
if(delta>0)
{
x[0]=(-1*b+sqrt(delta))/(2*a);
x[1]=(-1*b-sqrt(delta))/(2*a);
return 2;
}
return 0;
}
2020-05-24
#include <math.h>
int main(void) {
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
double delta = b * b - 4 * a * c;
if (delta > 0) {
double x1 = -b + sqrt(delta) / (2 * a);
double x2 = -b - sqrt(delta) / (2 * a);
printf("x1=%f,x2=%f\n", x1, x2);
}
else if (delta == 0) {
double x = -b / (2 * a);
printf("x=%f\n", x);
}
else
printf("No solutions!\n");
return 0;
}