标题:关于反函数的问题
只看楼主
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
结帖率:50%
已结贴  问题点数:10 回复次数:16 
关于反函数的问题
#include<stdio.h>
#include<math.h>
#define pi 3.141592654
main()
{
  double x,result;
  printf("please input x");
  scanf("&f",&x);
  result=asin(x);
  printf("arcsin%f is %f\n",x,result);
  return(0);
}
我是用这个来求arcsinx的值(这只是在一个求苹果表面积中的一小步),但是这一步老是运行结果不对,如果规定x=1.0,结果就对了,这是为什么?哪位高手帮我看看
搜索更多相关主题的帖子: 苹果 include please double return 
2011-10-11 11:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
结果怎样不对来着?

授人以渔,不授人以鱼。
2011-10-11 11:41
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
得分:0 
程序代码:
please input x 1.0
arcxin-92559631349317831000000000000000000000000000000000000.00000000 is -1.#IND00
Press any key to continue
这就是运行的结果,我让x的值等于1.0,结果应该为1.5左右才对的……还有就是我不会上图,所以只能手动输入这些了
2011-10-11 12:46
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
得分:0 
程序代码:
 #include<stdio.h>

 #include<math.h>

 #define pi 3.141592654

 main()

 {
   double x=1.0,result;
   result=asin(x)*180/pi;
   printf("arcsin%f is %f\n",x,result);
   return(0);

 }如果用这个程序就可以正确的运行,不知道是什么原因
2011-10-11 13:02
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
得分:0 
程序代码:
 #include

 #include

 #define pi 3.141592654

 main()

 {
   double x=1.0,result;
   result=asin(x)*180/pi;
   printf("arcsin%f is %f\n",x,result);
   return(0);

 }如果用这个程序就可以正确的运行,不知道是什么原因
2011-10-11 13:07
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
得分:0 
这个是我编辑的一个求苹果的表面积的一个程序,为什么结果也和上面的一样,就是不对啊
程序代码:
#include<stdio.h>
#include<math.h>
#define pi 3.1415926536
main()
{
    double a,l1,l2,d1,d2,b2,a1,b1,b,h,c,s,h1,h2,j;
    printf("请输入苹果的横径d1,d2,纵径l1,l2,梗洼深h1,额挖深h2中间以逗号隔开");
        scanf("%d,%d,%d,%d,%d.%d",&d1,&d2,&l1,&l2,&h1,&h2);
    a=(l1+l2)/4;
    b2=(d1+d2)/4;
    a1=a-(h1+h2)/2;
    b=b2/(1+sqrt((1-a1*a1)/(a*a)));
    b1=b2-b;
    j=(a*a-b*b)/(a*a);
    h=(a*a)/sqrt(a*a-b*b);
    c=asin(a1/a);
    s=(4-j)*pi*pi*pi*a*b1-((4-j)/180)*pi*pi*pi*a*b1*c-pi*j*sqrt(j)*a1*b1*cos(c)+(2*pi*a1*b/h)*sqrt(h*h-a1*a1)+(pi*pi*b*h/90)*asin(a1/h);
    printf("s=%d\n",s);
    return(0);
}
2011-10-11 13:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:5 
定义的x是double,scanf()时必须用"%lf",你用了"%f"就出错。这是scanf()本身的问题。

[ 本帖最后由 TonyDeng 于 2011-10-11 13:12 编辑 ]

授人以渔,不授人以鱼。
2011-10-11 13:10
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
得分:0 
系统自动检查的时候显示是没有错误的,可为什么就是求不出来,结果显示s=0
2011-10-11 13:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:3 
6楼,定义的变量全是double,scanf()的时候用"%d"当整数读当然错。两个问题是一类的。

授人以渔,不授人以鱼。
2011-10-11 13:16
sunhaiting12
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2011-10-10
得分:0 
我把double改成了float,%也改成了%lf,可结果为什么又成了s=-1.#IND00
2011-10-11 13:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-352066-1-1.html




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

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