| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 737 人关注过本帖
标题:c语言解方程
只看楼主 加入收藏
妙公子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
c语言解方程
一元二次方程 ax^2+bx+c=0 假设b^2-4ac>=0 这里不需要再判断了,
#include<stdio.h>
#include<math.h>
main()
{
double a,b,c,x1,x2,d,p,q;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(d)/(2*a);
x1=p+q;
x2=p-q;
printf("x1=%.2f,x2=%.2f\n",x1,x2);
}

问题1:输入1 2 1 之后显示
1 2 1
x1=-1.#J,x2=-1.#J
为什么?怎么解决?
问题2:使用float类型时编译提示错误:conversion from 'double ' to 'float ', possible loss of data 为什么,怎样才能用float正常解决?
搜索更多相关主题的帖子: 解方程 c语言 
2009-07-31 02:56
妙公子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-31
收藏
得分:0 
用的是Visual C++ 6.0编译器
2009-07-31 02:57
紫ing~
Rank: 4
来 自:中科大
等 级:业余侠客
帖 子:103
专家分:273
注 册:2008-11-25
收藏
得分:6 
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
double a,b,c,x1,x2,d,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
d=b*b-4*a*c;
if(d<0) printf("\nerror input.");
else

 {
  p=-b/(2*a);
  q=sqrt(d)/(2*a);
  x1=p+q;
  x2=p-q;
  printf("x1=%.2f,x2=%.2f\n",x1,x2);

 }
}


改了两个地方,一个是输入时因为定义的double,改为了%lf
另外就是如没有实根,直接显示error。我试过可以了。另外,即使你源程序输入1 2 1也不会出现你那种情况啊,只有输入实根不存在的值才会那样吧

因为sqrt返回的就是double,还是定义double的好
收到的鲜花
  • 妙公子2009-07-31 03:51 送鲜花  3朵  

唯有天道恒在,往复循环,不曾更改。。。
2009-07-31 03:15
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:6 
你的代码在我上面,double改成float之后能正常输出。。
要是用double的话,你上面scanf下面应该是%lf
2009-07-31 03:23
CCVC果冻爽
Rank: 4
等 级:业余侠客
帖 子:116
专家分:209
注 册:2009-7-31
收藏
得分:6 
int是%d,float是%f,double是%lf。LZ还得好好看书啊..
2009-07-31 16:08
machuang555
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2009-7-31
收藏
得分:2 
double的类型是%lf的,%c是char  %s是字符串的  而%f的是float
2009-07-31 19:34
快速回复:c语言解方程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079098 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved