c语言高手:下面一段程序只能求出判别式大于零时的根,可问题又出在浮点...

发布网友 发布时间:2024-10-24 03:29

我来回答

3个回答

热心网友 时间:2024-11-19 04:27

/*if(m>=1e-6) */x=(-b+sqrt(m))/(2*a);x2=(-b-sqrt(m))/(2*a);
/*else{x=(float)(-b/(2*a));x2=x;}*/
你用/* */注释了判断和小于零的情况,所以只能在大于零是正常
if(m>=1e-6)
{
x=(-b+sqrt(m))/(2*a);
x2=(-b-sqrt(m))/(2*a);
}
else
{
x=(float)(-b/(2*a));
x2=x;
}
小于0是就出错了

热心网友 时间:2024-11-19 04:32

我想应该是scanf("%f,%f%,%f",&p,&q,&r);这句话的问题
你输入的时候肯定没有输入“,”就直接输入了3个数,所以不对,
要么改为scanf("%f%f%%f",&p,&q,&r);
要么输入“1,-4,4”试试

热心网友 时间:2024-11-19 04:32

我没仔细看你代码,因为实在是看不下去了。
你的代码规范做的太差了,乱七八糟,这个比你不会一个算法严重的多。
你把函数中的那两行代码给注释了,当然算不出结果,x2返回的是一个随机数。结果肯定有问题。
楼上讲的那个问题也对的,scanf()这个函数中你双引号中的格式是什么,那你手动输入的格式必须一样,否则从文件流中获取数据时就有问题。
建议你在使用scanf()时候不要图省事,输入一个参数就调用一次函数。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com