fzzy200 发表于 2022-8-12 20:42:10

009第三章 顺序程序设计03 例4-15有点疑惑谢谢答疑

#include<stdio.h>
#include<math.h>
void main()
{
        double a,b,c,disc,x1,x2,p,q;
        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=-1.#J
x2=-1.#J

ba21 发表于 2022-8-13 12:42:00


scanf("%lf,%lf,%lf",&a,&b,&c);
输入:100,200,10

ExiaGN001 发表于 2022-8-13 16:46:27

本帖最后由 ExiaGN001 于 2022-8-13 16:47 编辑

当scanf中出现格式控制符以外的文字时,你必须给予程序这些文字。
例如scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
在执行时,你输入的应是满足以下格式的字符串:
a=,b=,c=
代码应按照如下格式改动:
#include<stdio.h>
#include<math.h>
void main()
{
      double a,b,c,disc,x1,x2,p,q;

        printf("a=");
        scanf("%lf",&a);
        printf(",b=");
        scanf("%lf",&b);
        printf(",c=");
        scanf("%lf",&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);
}

fzzy200 发表于 2022-8-14 10:03:15

ExiaGN001 发表于 2022-8-13 16:46
当scanf中出现格式控制符以外的文字时,你必须给予程序这些文字。
例如scanf("a=%lf,b=%lf,c=%lf",&a,&b,& ...

你的这种方法也可以,感谢答疑
页: [1]
查看完整版本: 009第三章 顺序程序设计03 例4-15有点疑惑谢谢答疑