莫名其妙小邪 发表于 2020-7-21 21:16:58

哪里有错误啊?

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

void main()
{
   double a,b,c,A,q,p,x1,x2;
   printf("求a*x^2+b*x+c=0的根,输入啊a,b,c的值\n");

   scanf("%lf,%lf,%lf",&a,&b,&c);
   A=b*b-4*a*c;
   p=-b/(2*a);
   q=sqrt(A)/(2*a);
   x1=p+q;
   x2=p-q;
    printf("\nx1=%5.2f\nx2=%5.2f",x1,x2);
}

我输入不管输入任何数字都算出来的结果都是不正确的,而且这个结果固定,这是哪里有问题啊,求教,谢谢

baige 发表于 2020-7-22 07:04:52

scanf是格式化输入,你输入的格式应该跟里面一样,例如:2,3,1

莫名其妙小邪 发表于 2020-7-22 20:08:45

baige 发表于 2020-7-22 07:04
scanf是格式化输入,你输入的格式应该跟里面一样,例如:2,3,1

不行啊,2,3,1输入也是错的,输入格式和scanf里面的一样,不应该是输入小数吗?但是为不管是整数还是小数算出来都不对

风过无痕1989 发表于 2020-7-23 02:40:48

求a*x2+x+c=0的根,输入a,b,c的值
2,-5,3
x1 = 1.50
x2 = 1.00
Press any key to continue

求ax2+b*x+c=0的根,输入a,b,c的值
2,3,1
x1 = - 0.50
x2 = - 1.00
Press any key to continue

我这里算是没有问题的,兄弟! 是不是你输入时的输入法不是英文的逗号?

405794672 发表于 2020-7-23 09:35:44

你要搞清楚,如果A小于0,你怎么求平方根?
应该加上条件判断。A小于0,无根。A=0,只有一个根,A>0,才是你这两个根

风过无痕1989 发表于 2020-7-23 09:58:03

405794672 发表于 2020-7-23 09:35
你要搞清楚,如果A小于0,你怎么求平方根?
应该加上条件判断。A小于0,无根。A=0,只有一个根,A>0,才是 ...

求ax^2+bx+c-的根,输入a,b.c的值
-2,6,9
x1 = -1.10
x2 = 4.10
Press any key to continue

不是判断 A 是否大于 0,而是要判断:b^2 - 4*a*c >= 0

巴巴鲁 发表于 2020-7-23 16:56:27

A不就是b^2 - 4*a*c嘛?{:10_264:}

405794672 发表于 2020-7-23 18:20:53

风过无痕1989 发表于 2020-7-23 09:58
求ax^2+bx+c-的根,输入a,b.c的值
-2,6,9
x1 = -1.10


大侠,楼主已经把b^2-4*a*c赋值给A了

SHRS23 发表于 2020-7-23 19:35:49

如果你的输出都是0的话,应该是输入格式的问题,就像二楼说的那样中间要有逗号,而且必须是英文状态下的逗号,你的程序我运行起来也是正确的

如果你的还不行,建议你把程序出错的输入输出截图发上来

莫名其妙小邪 发表于 2020-7-23 20:44:49

不是不想放图,是这个论坛我不知道怎么放图,点图片它让我输入地址没见过的操作啊0.0
A现在没有判断大于0还是小于0,但是我是人为控制输入的数字的
求a*x^2+b*x+c=0的根,输入啊a,b,c的值
1 3 2

x1=92559631349317831000000000000000000000000000000000000000000000.00
x2= 0.00Press any key to continue

这是我输入的一组数字,跳出来的是这个

莫名其妙小邪 发表于 2020-7-23 20:45:51

莫名其妙小邪 发表于 2020-7-23 20:44
不是不想放图,是这个论坛我不知道怎么放图,点图片它让我输入地址没见过的操作啊0.0
A现在没有判断大于0 ...

应该不是逗号之类的问题,我编译的时候是0错误 0警告的

风过无痕1989 发表于 2020-7-23 21:15:31

本帖最后由 风过无痕1989 于 2020-7-23 21:21 编辑

得,上传图片要审核,能不能放出来,还不知道呢

还是用自己的方式,图文识别后发出来吧:

a*x^2+b*x+c=0,输入 a,b,c 的值
1,3,2
x1= -1.00
x2= -2.00
---------------------------------------------
Process exited after 9.084 seconds with return value 19
请按任意键继续 . . .

(今天的 VC++ 出问题了,没办法,下了个DEV C++,就有了这个运算时间)

莫名其妙小邪 发表于 2020-7-23 21:18:55

风过无痕1989 发表于 2020-7-23 21:15
得,上传图片要审核,能不能放出来,还不知道呢

我在上面给出了一种输入得出的结果
然后为我的程序现在是直接复制我这个帖子上面写的语句的
可以分析一波

李龙江 发表于 2020-7-23 21:26:13

你试一下用scanf_s来输入

莫名其妙小邪 发表于 2020-7-23 21:32:27

李龙江 发表于 2020-7-23 21:26
你试一下用scanf_s来输入

这个是啥用法,我还没有学到这个 直接scanf_s("");这样子吗?

风过无痕1989 发表于 2020-7-23 21:41:27

莫名其妙小邪 发表于 2020-7-23 21:18
我在上面给出了一种输入得出的结果
然后为我的程序现在是直接复制我这个帖子上面写的语句的
可以分析一 ...

兄弟,我好像知道的问题出在哪了,你这一句scanf("%lf,%lf,%lf",&a,&b,&c); 要求输入是用逗号隔开,而你输入时不是用逗号隔开,用了空格隔开的。我试了一下,输出也是乱七八糟的

莫名其妙小邪 发表于 2020-7-24 21:02:14

风过无痕1989 发表于 2020-7-23 21:41
兄弟,我好像知道的问题出在哪了,你这一句scanf("%lf,%lf,%lf",&a,&b,&c); 要求输入是用逗号隔开,而 ...

破案了
我发现我用的逗号还是中文格式的逗号,那怪之前空格 逗号都不行

风过无痕1989 发表于 2020-7-25 00:40:19

莫名其妙小邪 发表于 2020-7-24 21:02
破案了
我发现我用的逗号还是中文格式的逗号,那怪之前空格 逗号都不行

我在4楼就提醒你,可能是逗号问题

我也是新手,需要点荣誉,给鼓励鼓励,弄个最佳答案嘛
页: [1]
查看完整版本: 哪里有错误啊?