当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 19:54 

注册: 2012-12-27 19:50
帖子: 3
系统: ubuntu
送出感谢: 0 次
接收感谢: 0 次
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c;
float x1,x2,q,p;
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);
x1=p+q;
x2=p-q;
printf("x1=%5.2f x2=%5.2f\n",x1,x2);
return 0;
}

如果
int a,b,c;
float x1,x2,q,p;
改成 float x1,x2,q,p,a,b,c;就对了,为什么呢? :em06


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 20:29 

注册: 2007-11-26 12:05
帖子: 186
送出感谢: 2
接收感谢: 1
如果你将

p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);

改成

代码:
p = -b / ( 2.0 * a );
q = sqrt ( b * b - 4.0 * a * c ) / (2.0 * a);


就对了


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 20:30 

注册: 2007-11-26 12:05
帖子: 186
送出感谢: 2
接收感谢: 1
我怀疑你有没有好好看书


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 21:11 

注册: 2012-12-27 19:50
帖子: 3
系统: ubuntu
送出感谢: 0 次
接收感谢: 0 次
bluebirdshao 写道:
如果你将

p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);

改成

代码:
p = -b / ( 2.0 * a );
q = sqrt ( b * b - 4.0 * a * c ) / (2.0 * a);


就对了

谢谢你,可是能麻烦你给我说一下为什么要改成2.0吗?我看了多遍书还是没有找到根据。 :em01


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 21:12 

注册: 2012-12-27 19:50
帖子: 3
系统: ubuntu
送出感谢: 0 次
接收感谢: 0 次
bluebirdshao 写道:
我怀疑你有没有好好看书

谢谢你,我以后会更仔细的。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 21:24 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
abc为什么是int?和老谭学的?

Sent from my SK17i using Tapatalk 2


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 21:26 

注册: 2007-11-26 12:05
帖子: 186
送出感谢: 2
接收感谢: 1
哎,解释真是一件麻烦事:
首先,整型与整型相除,最后结果也是整型(int),所以你的
代码:
p = -b / (2 * a);

得到的结果是整型
如果希望这个结果是你以为的结果,就让整型与浮点型做乘除
代码:
p = -b / (2.0 * a)


另外还有就是,如果你不是写手持机设备的代码,没必要用 float
因为无论是整型的相乖除也好,float 的相乘除也好,最终的计算过程都会将这些类型
转换成 double 类型来做运算,运算完之后再转换回相应的类型。

既然你要的是浮点型的数据干嘛还要做一步多余的转换呢
直接用 double 型。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-27 21:41 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
是一元二次方程,还是二元一次方程?


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 新手困在了求二元一次方程根的编程上,求指导。
帖子发表于 : 2012-12-28 8:50 
头像

注册: 2009-07-25 1:57
帖子: 701
送出感谢: 5
接收感谢: 13
这玩意儿写个玩具就可以了,别这真的用。类型也应该用double型。
本来求根公式就经常被用来作为cancellation导致rounding error的示例。
比如见:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html 中的Cancellation这一节。


_________________
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译