当前位置:编程学习 > C/C++ >>

C语言编写一元二次方程的问题

#include <stdio.h>
#include<math.h>
main(void)
{
long a=0,b=0,c=0,d=0,X1=0,X2=0,e=0;/*定义变量*/
printf("a,b,c,:\n");/*提示输入3个数*/
scanf("%ld,%ld,%ld",&a,&b,&c);
d=(b*b)-(4*a*c);/*axE2+bx+c=0 中判断 b*b-4ac*/
if(d>=0)/*判断方程有无解*/
{
e=sqrt(d);/*根号d */
X1=-b+e/(2*a);/*计算方程*/
X2=-b-e/(2*a);/*计算方程*/
printf("\n positive:\n X1=%ld,\n negative:\nX2=%ld",X1,X2);/*输出X1 X2*/
}
else
printf("Equation");/*方程无解*/
getch();
}

为什么结果不正确

这个方程有什么问题

答案:#include <stdio.h>
#include<math.h>
main(void)
{
long a=0,b=0,c=0,d=0,X1=0,X2=0,e=0;/*定义变量*/
printf("a,b,c,:\n");/*提示输入3个数*/
scanf("%ld,%ld,%ld",&a,&b,&c);
d=(b*b)-(4*a*c);/*axE2+bx+c=0 中判断 b*b-4ac*/
if(d>=0)/*判断方程有无解*/
{
e=sqrt(d);/*根号d */
X1=(-b+e)/(2*a);/*计算方程*/
X2=(-b-e)/(2*a);/*计算方程*/
printf("\n positive:\n X1=%ld,\n negative:\nX2=%ld",X1,X2);/*输出X1 X2*/
}
else
printf("Equation");/*方程无解*/
getch();
}

程序想法没错,但设计的时候有点失误。
void main()
{
float a=0,b=0,c=0,d=0,X1=0,X2=0,e=0;/*定义变量*/
printf("axE2+bx+c=0,(a,b,c):\n");/*提示输入3个数*/
scanf("%f,%f,%f",&a,&b,&c);/*输入的时候用float型 */

e=sqrt(d);/*根号d */
X1=(-b+e)/(2*a);/*计算方程,公式有点不点,逻辑*/
X2=(-b-e)/(2*a);/*计算方程*/

printf("\n positive:\n X1=%f,\n negative:\nX2=%f",X1,X2);/*输出X1 X2,输出的时候也要用float型*/
}
else
printf("Equation");/*方程无解*/
getch();
}

//经修改,可以正常运行,

还有建议下,你就在定义变量的时候不要一大串一起定义类型,

有时候变量的类型是不无法隐型转换的,就会出错。

就像程序里面的,开根号又不一定都开出个整数,大多都是带小数的,就应该定义成float型,

最后的解也会直接化成带小数的,要是你用long(长整型,也是整型的一种),

那小数点后面就将被程序自动省略,那问题可就大了,呵呵,。

还在做为printf输出的时候,要给点提示,不然人家也不知道,这a,b,c是干嘛用的。

请用float 型定义你的变量

上一个:C语言程序改错、填空题
下一个:C语言srand和rand函数

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,