LordVoldemo 发表于 2012-6-21 19:43:19

课后题问题

#include<stdio.h>
#include<math.h>
void main()
{    double b,a,c,q,x1,p,x2;
    printf("请输入a,b,c:");
    scanf("%lf,%lf,%lf",&a,&b,&c);
    p = -b/(2.0*a);
    q = sqrt(b*b-4.0*a*c)/(2.0*a);
    x1 = p+q;
    x2 = p-q;
    printf("答案:x1 = %f \nx2 = %lf",x1,x2);

}
谁告诉我哪错了??
运行结果
请输入a,b,c:3.0,4.0,5.0
答案:x1 = -1.#IND00
x2 = -1.#IND00

仰望天上的光 发表于 2012-6-21 19:43:20

q = sqrt(b*b-4.0*a*c)/(2.0*a);
你输入的值使b*b-4.0*a*c为负,所以 sqrt(b*b-4.0*a*c)对一个负数进行开平方,得到特殊值

LordVoldemo 发表于 2012-6-21 20:08:38

Story没用代码功能
原因是发完帖子才看见使用代码功能的帖子:curse:

仰望天上的光 发表于 2012-6-21 22:00:00

scanf("%lf,%lf,%lf",&a,&b,&c);
改为scanf("%lf %lf %lf",&a,&b,&c);

LordVoldemo 发表于 2012-6-22 08:11:00

一样的只是输入格式不一样

辑或 发表于 2018-5-4 22:15:47

#include<stdio.h>
#include<math.h>

int main()
{
        double a,b,c,disc,x1,x2,p,q;
        scanf("%lf,%lf,%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("x1=%5.2f\n\nx2=%5.2f\n",x1,x2);
}
我这样可以

辑或 发表于 2018-5-4 22:20:00

我看了一下,你的程序应该没问题,换个数试试,比如1,2,1,我猜是你的那组数的运算结果它表示不出来。
页: [1]
查看完整版本: 课后题问题