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"#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(".h>%c"Y'
#include<
printf(";n方程只有一个解x1 = x2 = %f"
scanf("\
scanf("程序结束"\%d%d%d",&control),&a;
return 0; 0)
{
x1 = (-b + sqrt(delbta)) /
if(delbta >,x1);\););
int b = 0;););
double x1 = 0;
int c = 0
最佳答案
2019-10-06 03:10
(-b \n" sqrt(delbta)) main(void)
{
int x2
delbta
}
 ,&);
#include<
<= printf("//(delbta ;%d%d%d"); %c"while(1)
{
printf("Y =
printf("printf("0;
if(control=='\n方程没有解"4*a*c;0; x1 ;
scanf("delbta  ,x1);= ,&
x1 \n输入系数
}
else
int sqrt(delbta)) = b 2*a; = );N\n"== %f",x2);ctype; ,x1;2*a;= b*b c
int
double control); x2 a 0.h>\n如果想要继续请按 0; ,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;=  ,&
b; / ,&c);程序结束\n"\n方程有两个解x1=%f; x1 .h>(-b .h>or N'
int
return = #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 ",&control),&a;
printf(" 0)
{
printf(" 2*a;;/,x2);
int c = 0,x1;把格式弄清楚(,&b;
#include<,或空格分开),&c);
if(delbta >
}
while(toupper(control) == ',其他应该不会问题出了
scanf(",不然计算机怎么知道哪才算一个数字
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"#include< 2*a,也可以换成空格;ctype;stdio;
}
else if(delbta == 0)
{
x1 = x2 = -b/ 0)
{
x1 = (-b + sqrt(delbta)) /.h>.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("
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯