| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5715 人关注过本帖
标题:double型的数据用 %d 输入也可以?
只看楼主 加入收藏
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
结帖率:81.82%
收藏
已结贴  问题点数:10 回复次数:50 
double型的数据用 %d 输入也可以?
现在在家自学C语言,看到了第三章,有个题解不出来了,望大家帮忙一下。
编写程序求一元二次方程ax^2+bx+c=0的根。

终于可以睡觉了……
谢谢“heartnheart”、“Justfeeling”、“pangding
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    double a,b,c,x1,x2;
    printf("请输入a,b,c的值,并用空格隔开:\n");
    scanf("%d %d %d",&a,&b,&c);
    x1=(-b+sqrt(b*b-4*a*c))/2;
    x2=(-b-sqrt(b*b-4*a*c))/2;
    printf("方程%dx^2+%dx+%d=0的结果为:\n x1=%d\n x2=%d\n",a,b,c,x1,x2);
}


为什么double型的数据用 %d 输入也可以?

[ 本帖最后由 dydsdyds 于 2010-2-19 19:18 编辑 ]
搜索更多相关主题的帖子: 输入 数据 double 
2010-02-15 18:47
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:6 
很简单,把思路想出来就行了。提示一下:
首先得有3个变量存储a,b,c的值吧,然后就利用求根公式(这个你应该知道吧)求的结果,最后别忘了delta小于零的情况就行啦
2010-02-15 19:04
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用heartnheart在2010-2-15 19:04:30的发言:

很简单,把思路想出来就行了。提示一下:
首先得有3个变量存储a,b,c的值吧,然后就利用求根公式(这个你应该知道吧)求的结果,最后别忘了delta小于零的情况就行啦



我以为你会知道牛顿迭代法的。。。
2010-02-15 19:17
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
回复 2楼 heartnheart
求根公式别的都好说,但有根号,算术运算符里没有根号,怎么实现?

c语言刚开一学期,就换开VB...
2010-02-15 19:39
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
tragic
2010-02-15 19:41
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
回复 3楼 Devil_W
迭代法?不明白,
从网上找到了一个,但是看不懂~
迭代法开平方:
  #include<stdio.h>
  #include<math.h>
  void main()
  {
  double a,x0,x1;
  printf("Input a:\n");
  scanf("%lf",&a);//为什么在VC6.0中不能写成 “scanf("%f",&a);”?
  if(a<0)
  printf("Error!\n");
  else
  {
  x0=a/2;
  x1=(x0+a/x0)/2;
  do
  {
  x0=x1;
  x1=(x0+a/x0)/2;
  }while(fabs(x0-x1)>=1e-6);
  }
  printf("Result:\n");
  printf("sqrt(%g)=%g\n",a,x1);
  }
  求平方根的迭代公式:x1=1/2*(x0+a/x0)。
  算法:1.先自定一个初值x0,作为a的平方根值,在我们的程序中取a/2作为a的初值;利用 迭代公式求出一个x1。此值与真正的a的平方根值相比,误差很大。
  2.把新求得的x1代入x0中,准备用此新的x0再去求出一个新的x1.
  3.利用迭代公式再求出一个新的x1的值,也就是用新的x0又求出一个新的平方根值x1,此值 将更趋近于真正的平方根值。
  4.比较前后两次求得的平方根值x0和x1,如果它们的差值小于我们指定的值,即达到我们要求 的精度,则认为x1就是a的平方根值,去执行步骤5;否则执行步骤2,即循环进行迭代。

有没有简单一点的,我刚开始学,自学……
刚看到了第三章……

c语言刚开一学期,就换开VB...
2010-02-15 19:43
Justfeeling
Rank: 2
等 级:论坛游民
帖 子:26
专家分:47
注 册:2010-2-15
收藏
得分:2 
要是include<math.h>的话,直接 sqrt(参数)就是求平方根
比如说求100的平方根就写成   x=sqrt(100);  
x的值就是10.0(是浮点数)
2010-02-15 19:52
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
回复 7楼 Justfeeling
哦,懂了,就象这样吗?
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    float a;
    printf("请输入a的值:\n");
    scanf("%f",&a);
    printf("%f",sqrt(a));
}
必须是float?

c语言刚开一学期,就换开VB...
2010-02-15 19:57
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
回复 楼主 dydsdyds
帮忙看一下那个错误
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    double a,b,c,x1,x2;
    printf("请输入a,b,c的值,并用空格隔开:\n");
    scanf("%f %f %f",&a,&b,&c);
    x1=-b+sqrt(b*b-4*a*c);
    x2=-b-sqrt(b*b-4*a*c);
    print("%f,%f",x1,x2);
}
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
a.c
E:\Program Files\vc++\MyProjects\a\a.c(10) : warning C4013: 'print' undefined; assuming extern returning int

a.obj - 0 error(s), 1 warning(s)



c语言刚开一学期,就换开VB...
2010-02-15 20:11
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
最后一行printf,你写成print了
2010-02-15 20:21
快速回复:double型的数据用 %d 输入也可以?
数据加载中...
 
   



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

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