鱼C论坛

 找回密码
 立即注册
查看: 1620|回复: 11

[已解决]和笔算的结果不同

[复制链接]
发表于 2018-7-21 15:42:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么程序运算出来x1和x2都是-1,后面一串东西看不懂,像是哪里出错了。我笔算出来的结果,x1=-1,x2=-2.
最佳答案
2018-7-22 11:55:21
低调123456 发表于 2018-7-22 11:48
复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。

那应该就是变量类型和scanf输入时候的问题啦。scanf确实有点小坑,我那段代码主要就改了一个scanf的输入符号。同理,都换成float的类型的话也能用。嗯,可能是变量占的字节数不一样,输入就出问题了。
TIM图片20180721153929.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-21 22:10:28 | 显示全部楼层
楼主能把文字版的代码发出来了吗,这样瞅不清楚啊,另外,代码想要实现的功能也说下啊。
想要笔算下,都看不清
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 01:54:41 | 显示全部楼层
一元二次方程求解公式
应该是scanf一行有问题吧,直接对abc赋值1 3 2 后结果是没错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 06:04:21 | 显示全部楼层
啥都看不清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-22 09:45:06 | 显示全部楼层
TyCk 发表于 2018-7-21 22:10
楼主能把文字版的代码发出来了吗,这样瞅不清楚啊,另外,代码想要实现的功能也说下啊。
想要笔算下,都看 ...

抱歉,我把代码复制过来。这段代码只是一个算法,不知道为啥运算结果不对。
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. double a,b,c,disc,x1,x2,p,q;
  6. scanf("%1f%1f%1f",&a,&b,&c);
  7. disc=b*b-4*a*c;
  8. p=-b/(2.0*a);
  9. q=sqrt(disc)/(2.0*a);
  10. x1=p+q;x2=p-q;
  11. printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
  12. return 0;
  13. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 10:38:37 | 显示全部楼层
scanf参数是不是应该为lf,不是1f啊?试一下看看吧。printf的时候,也应该double类型吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-22 10:46:58 | 显示全部楼层
TyCk 发表于 2018-7-22 10:38
scanf参数是不是应该为lf,不是1f啊?试一下看看吧。printf的时候,也应该double类型吧。

试了一下,结果还是那样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 10:49:26 | 显示全部楼层
本帖最后由 TyCk 于 2018-7-22 10:50 编辑

我试了下,可以啊。
是不是编译器的问题?
把变量类型都改成float,你试一下?
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 11:00:43 | 显示全部楼层
本帖最后由 TyCk 于 2018-7-22 11:03 编辑

代码这样能测试成功,你用的啥工具编译的代码?
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main() {
  4.     double a, b, c, disc, x1, x2, p, q;
  5.     scanf("%lf%lf%lf", &a, &b, &c);  //这里是英文字母l,(看上去和1差不多啊咋)
  6.     disc = b * b - 4 * a * c;
  7.     p = -b / (2.0 * a);
  8.     q = sqrt(disc) / (2.0 * a);
  9.     x1 = p + q;
  10.     x2 = p - q;
  11.     printf("x1=%7.2f\nx2=%7.2f\n", x1, x2);
  12.     getchar();
  13.     getchar();
  14.     return 0;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-22 11:47:06 | 显示全部楼层
TyCk 发表于 2018-7-22 10:49
我试了下,可以啊。
是不是编译器的问题?
把变量类型都改成float,你试一下?

应该不是吧,换成float可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-22 11:48:22 | 显示全部楼层
TyCk 发表于 2018-7-22 11:00
代码这样能测试成功,你用的啥工具编译的代码?

复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 11:55:21 | 显示全部楼层    本楼为最佳答案   
低调123456 发表于 2018-7-22 11:48
复制你的代码能用,我的是vs,之前用vc++一直崩,前段时间换成了vs,比vc++稳多了。

那应该就是变量类型和scanf输入时候的问题啦。scanf确实有点小坑,我那段代码主要就改了一个scanf的输入符号。同理,都换成float的类型的话也能用。嗯,可能是变量占的字节数不一样,输入就出问题了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 11:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表