跪求大神指导c语言程序题 一元二次方程的标准形式为ax2+bx+c=0(a≠0),其中a、b、c为常数。 20

。求解一元二次方程的根x时有三种情况,分别为(记Δ=b2-4ac):1.Δ>0,有两个不等的实根;2.Δ=0,有两个相同的实根;3.Δ<0,有两个共轭的虚根。输入为多行,... 。求解一元二次方程的根x时有三种情况,分别为(记Δ=b2-4ac):
1. Δ>0,有两个不等的实根;
2. Δ=0,有两个相同的实根;
3. Δ<0,有两个共轭的虚根。

输入为多行,每行为一元二次方程的三个常数a,b,c,在double类型范围之内。当输入的a为0时,表示输入结束。
每行输入的样例对应三行输出。第一行输出为样例的编号。第二行输出为所输入常数a,b,c对应的一元二次方程的标准形式,要求输出满足a>0。第三行输出为所输入方程的根,分为三种情况:1. 若方程满足Δ>0,即有两不等实根x1、x2,则按顺序(先小后大)输出这两个实根。2. 若方程满足Δ=0,即有两相同实根x,则输出一个实根。3. 若方程满足Δ<0,即有两共轭的虚根x1、x2,则输出两个虚根,虚部符号为正的(即u+vi形式)先输出,虚部符号为负的(x-yi形式)后输出。以上输出均不输出数学上无意义或可省略的的符号,所有数值最多保留6位有效数字。每个样例之后都有一个空行分隔。
。求解一元二次方程的根x时有三种情况,分别为(记Δ=b2-4ac):
1. Δ>0,有两个不等的实根;
2. Δ=0,有两个相同的实根;
3. Δ<0,有两个共轭的虚根。

输入为多行,每行为一元二次方程的三个常数a,b,c,在double类型范围之内。当输入的a为0时,表示输入结束。
每行输入的样例对应三行输出。第一行输出为样例的编号。第二行输出为所输入常数a,b,c对应的一元二次方程的标准形式,要求输出满足a>0。第三行输出为所输入方程的根,分为三种情况:1. 若方程满足Δ>0,即有两不等实根x1、x2,则按顺序(先小后大)输出这两个实根。2. 若方程满足Δ=0,即有两相同实根x,则输出一个实根。3. 若方程满足Δ<0,即有两共轭的虚根x1、x2,则输出两个虚根,虚部符号为正的(即u+vi形式)先输出,虚部符号为负的(x-yi形式)后输出。以上输出均不输出数学上无意义或可省略的的符号,所有数值最多保留6位有效数字。每个样例之后都有一个空行分隔。
这是我写的 求改错
#include <stdio.h>
#include <math.h>

int main() {double a,b,c,x1,x2,t;int i,count=1;for (i=0; ; i++){scanf ("%lf",&a);if (a>-0.0000001 && a<0.000001)return 0;scanf ("%lf %lf",&b,&c);if (a<-0.0000001)a=-a,b=-b,c=-c;if (a>0.000001){printf ("Case %d :\n",count);count++;if (a>0.999999 && a<1.000001)printf ("x^2 ");elseprintf ("%gx^2 ",a);if (b>0.999999 && b<1.000001)printf ("+ x ");else if (b>0.000001)printf ("+ %gx ",b);else if (b<-0.000001)printf ("- %gx ",-b);if (c>0.000001)printf ("+ %g = 0\n",c);else if (c<-0.000001)printf ("- %g = 0\n",-c);elseprintf ("= 0\n");t=b*b-4*a*c;if (t>0.000001){t=sqrt (t);x1=(-b+t)/(2*a);x2=(-b-t)/(2*a);if(x1<0.000000001&&x1>-0.000000001) x1=0;if(x2<0.000000001&&x2>-0.000000001) x2=0;printf ("two real roots : %g, %g\n\n",x2,x1);}if (t>-0.0000001 && t<0.000001){x1=x2=-b/(2*a);if(x1<0.000000001&&x1>-0.000000001) x1=0;printf ("only one real root : %g\n\n",x1);}if (t<-0.0000001){t=sqrt(-t)/(2*a);if (t>0.999999 && t<1.000001){if (b>-0.0000001 && b<0.000001)printf ("two imaginary roots : i, -i\n\n");elseprintf ("two imaginary roots : %g+i,%g-i\n\n",-b/(2*a),-b/(2*a));}else if (t>1.000001 || t<0.999999){if (b>-0.0000001 && b<0.000001)printf ("two imaginary roots : %gi, -%gi\n\n",t,t);elseprintf ("two imaginary roots : %g+%gi,%g-%gi\n\n",-b/(2*a),t,-b/(2*a),t);}}}}return 0;}
展开
 我来答
匿名用户
2012-12-06
展开全部
你确定你没开玩笑?
for (i=0; ; i++)有错,for(初始值;循环条件;表达式)你自己看一看呢!
还有就是逻辑上有问题,C语言编写的程序没有规定严谨的排列方式,但是不同的语序,程序执行的结果截然不同,O(∩_∩)O哈哈~
追问
那个是for (i=0; ; i++)是对的。。。我确定
追答
没有条件怎么循环?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4f47f92
2012-12-06
知道答主
回答量:68
采纳率:0%
帮助的人:18.9万
展开全部
if语句后面的语句要加{},自己看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bfb8612
2012-12-08
知道答主
回答量:49
采纳率:0%
帮助的人:40万
展开全部
头疼……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
编程小菜鸟9
2012-12-08 · TA获得超过237个赞
知道小有建树答主
回答量:183
采纳率:100%
帮助的人:154万
展开全部
这种代码看着就。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangjunyao0624
2012-12-06 · TA获得超过587个赞
知道答主
回答量:154
采纳率:0%
帮助的人:62.1万
展开全部
。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式