飞不高的蚂蚁 发表于 2012-3-29 23:34:57

一元二次方程求解编程错误,求指导!


#include<stdio.h>
#include<math.h>
void main()
{
double a, b, c, p, q, x1 ,x2, disc;
scanf("a=%lf,b=%lf,c=%lf", &a, &b, &c);
disc = b*b-4*a*c;
p = -b/(2*a);
q = sqrt(disc)/(2*a);
x1 = p + q;
x2 = p - q;
printf("\nx1=%5.2f\nx2=%5.2f\n",x1, x2);
}
结果怎么是这样子,求指教,顺便问一下“x1=%5.2f”中的5.2f什么意思
file:///C:/Users/Administrator/Desktop/QQ截图20120329233207.png

莱瑞古德 发表于 2012-3-29 23:34:58

飞不高的蚂蚁 发表于 2012-3-29 23:42 static/image/common/back.gif
结果如下:
1,2,1



你又没有说你当时输入的是什么,如果你输入的数字会导致方程无解,那么就会出现计算上的一系列错误,就像你用scanf的%d控制符,确输入一个英文字母时,程序可能会立即陷入死循环,%5.2f是以float型输出,输出宽度至少5(也就是说输
出的数宽度大于5,可以超过5这个宽度。而是代表其中小数部分是宽度2)

飞不高的蚂蚁 发表于 2012-3-29 23:42:14

结果如下:
1,2,1

x1=-1.#J
x2=-1.#J


谢谢各位鱼友啦!!{:1_1:}

心静如死水 发表于 2012-3-30 00:30:46

结果真确呀,什么情况 ?

心静如死水 发表于 2012-3-30 00:31:56

输出一个域宽是5,小数位数是2的一个float型数据

风扫地 发表于 2012-3-30 10:27:53

一元二次方程有解的条件是什么。。。。x2+2x+1 = 0
判别式要大于等于0你判断了么、、负数开平方出来是什么?

chao_prince 发表于 2012-3-30 10:35:07

楼上正解,,可以参考,,

819551413 发表于 2012-3-30 11:31:10

楼主你输入时应该是a=1,b=2,c=1,还有要判断方程是否有根

飞不高的蚂蚁 发表于 2012-3-30 12:06:24

谢谢各位的解答!:handshake

bisoo 发表于 2012-4-2 15:44:06

输入值的时候注意数据输入格式。。。。

飞不高的蚂蚁 发表于 2012-4-3 00:58:07

谢谢bisoo

yingzi 发表于 2012-4-4 11:06:34

:D一楼对了;应该

追梦1航海 发表于 2014-3-14 21:21:32

看不见你的图片不过表示,要固定输入,因为用sqrt,如果你前面乱输入会导致sqrt处理一个负数,当然会出现别的结果了,还要scanf里面居然有a=   b=c=汗呢,谁告诉你有这种奇葩的格式的
页: [1]
查看完整版本: 一元二次方程求解编程错误,求指导!