c语言定义一个函数求一元二次方程求解,C语言问题 我想编写一个一元二次方程的求解程序 不知道哪里错误了望前辈指正...

C语言问题 我想编写一个一元二次方程的求解程序 不知道哪里错误了望前辈指正

答案:3  信息版本:手机版

解决时间 2019-10-06 07:19

已解决

2019-10-06 02:13

,x1,&b;\\

int main(void)

{

int a = 0,x2=%f"

do

{

printf("n方程有两个解x1=%f;

printf("2*a,&c);

double x2 = 0;

double delbta = 0;

x2 = (-b - sqrt(delbta)) /,x2); 0)

{

printf("

char control.h>

delbta = b*b - 4*a*c;;n如果想要继续请按 Y or N&quot#include#includeprintf(" 2*a;ctype.h>math;n方程没有解"n输入系数 a b c "

}

else(delbta <

}

while(toupper(control) == '

}

else if(delbta == 0)

{

x1 = x2 = -b/);

}

printf(&quot.h>%c"Y'

#include<

printf(";n方程只有一个解x1 = x2 = %f"

scanf("\

scanf("程序结束"\%d%d%d&quot,&control),&a;

return 0; 0)

{

x1 = (-b + sqrt(delbta)) /

if(delbta &gt,x1);\););

int b = 0;););

double x1 = 0;

int c = 0

最佳答案

2019-10-06 03:10

(-b \n"   sqrt(delbta)) main(void)

{

int x2

delbta

}

&nbsp,&);

#include<

<= printf("//(delbta ;%d%d%d");    %c"while(1)

{

printf("Y =

printf("printf("0;

if(control=='\n方程没有解"4*a*c;0; x1 ;

scanf("delbta &nbsp,x1);=&nbsp,&

x1   \n输入系数

}

else

int  sqrt(delbta)) =  b 2*a; = );N\n"== %f&quot,x2);ctype;&nbsp,x1;2*a;= b*b c

int

double control); x2 a 0.h>\n如果想要继续请按 0;&nbsp,x2=%f"= = control;-    0)

{

printf("\n方程只有一个解x1   if(delbta 0;

if(delbta

double  x2 =

}

else

double

#include<0)

{ 0)

{

>

}

printf("a;x2 a  b - = );+

scanf("

char -b/2*a;= &nbsp,&

b; /&nbsp,&c);程序结束\n"\n方程有两个解x1=%f; x1 .h>(-b&nbsp.h>or N'

int

return =&nbsp#include

全部回答

1楼

2019-10-06 05:05

你的程序有2处错误:

(1)x1 = x2 = -b/2*a;

这里会出错,把a、b、c改成double类型就可以了。这跟C语言的四则运算规则有关系。a、b都为int类型,他们相除的结果也为int类型,会自动舍弃小数部分。比如 3/5=0,而不是0.6

(2) / 2*a

所有除以2a的地方都不会,要加上小括号,变为 (2*a)。

2楼

2019-10-06 04:16

#include

#include

#include

int main(void)

{

int a = 0;

int b = 0;

int c = 0;

char control;

double delbta = 0;

double x1 = 0;

double x2 = 0;

do

{

printf("\n输入系数 a b c ");

scanf("%d%d%d",&a,&b,&c);//该为scanf("%d,%d,%d",&a,&b,&c);把格式弄清楚(,也可以换成空格,输入的时候数字以,或空格分开),不然计算机怎么知道哪才算一个数字

delbta = b*b - 4*a*c;

if(delbta > 0)

{

x1 = (-b + sqrt(delbta)) / 2*a; //2*a加括号,以下同理

x2 = (-b - sqrt(delbta)) / 2*a;

printf("\n方程有两个解x1=%f,x2=%f",x1,x2);

}

else if(delbta == 0)

{

x1 = x2 = -b/2*a;

printf("\n方程只有一个解x1 = x2 =...\n输入系数 a b c &quot,&control),&a;

printf(" 0)

{

printf(" 2*a;;/,x2);

int c = 0,x1;把格式弄清楚(,&b;

#include&lt,或空格分开),&c);

if(delbta >

}

while(toupper(control) == ',其他应该不会问题出了

scanf(&quot,不然计算机怎么知道哪才算一个数字

delbta = b*b - 4*a*c;n方程只有一个解x1 = x2 = %f"\该为scanf("/\

int b = 0,以下同理

x2 = (-b - sqrt(delbta)) /);2*a加括号; /;%d;\

double x2 = 0,输入的时候数字以;n方程有两个解x1=%f;

}

else(delbta <

double x1 = 0;

int main(void)

{

int a = 0,%d,&c);n如果想要继续请按 Y or N&quot#include< 2*a,也可以换成空格;ctype;stdio;

}

else if(delbta == 0)

{

x1 = x2 = -b/ 0)

{

x1 = (-b + sqrt(delbta)) /.h&gt.h>);),&a;;n方程没有解"

#include

}

printf("math;or N就不用了吧;/.h>

double delbta = 0;;\,&b;2*a;); /,%d"

return 0,x2=%f"Y',没细看,x1);

printf("/;%c"

scanf("程序结束"

char control;%d%d%d"

do

{

printf("

printf(&quot

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

C语言中,我们可以编写一个简单的程序来解决一元二次方程。通常,一元二次方程的形式是 ax^2 + bx + c = 0,其中a、b和c是给定的实数。下面是一个基本的程序结构,它会提示用户输入三个系数,并计算根(如果它们存在的话)。这里假设我们使用了公式 (-b ± sqrt(b² - 4ac)) / (2a) 来计算根。 ```c #include <stdio.h> #include <math.h> // 引入数学库,用于sqrt函数 // 函数声明,用于计算二次方程的两个根 void quadratic_solver(float a, float b, float c); int main() { float a, b, c; printf("请输入一元二次方程的系数 a, b 和 c(范围为-10到10):\n"); scanf("%f %f %f", &a, &b, &c); // 输入系数 // 检查是否满足一元二次方程条件 if (a == 0) { printf("错误:二次项系数a不能为零。\n"); return 1; } // 计算并打印根 quadratic_solver(a, b, c); return 0; } // 函数实现 void quadratic_solver(float a, float b, float c) { float discriminant = b * b - 4 * a * c; // 计算判别式 if (discriminant > 0) { float root1 = (-b + sqrt(discriminant)) / (2 * a); float root2 = (-b - sqrt(discriminant)) / (2 * a); printf("两个实根分别为: %.2f 和 %.2f\n", root1, root2); } else if (discriminant == 0) { float root = -b / (2 * a); printf("唯一实根为: %.2f\n", root); } else { // 复数根 float realPart = -b / (2 * a); float imaginaryPart = sqrt(-discriminant) / (2 * a); printf("无实根,有两个复数根: %.2f + %.2fi 和 %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值