
跪求大神指导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;} 展开
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++)有错,for(初始值;循环条件;表达式)你自己看一看呢!
还有就是逻辑上有问题,C语言编写的程序没有规定严谨的排列方式,但是不同的语序,程序执行的结果截然不同,O(∩_∩)O哈哈~
追问
那个是for (i=0; ; i++)是对的。。。我确定
追答
没有条件怎么循环?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if语句后面的语句要加{},自己看一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种代码看着就。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询