标题:哪位高手能帮我看一下 这个程序 当输入96时就不行了 而95之前的数都可以 很 ...
只看楼主
遥望江南hsj
Rank: 1
等 级:等待验证会员
帖 子:29
专家分:0
注 册:2010-4-13
结帖率:40%
已结贴  问题点数:20 回复次数:12 
哪位高手能帮我看一下 这个程序 当输入96时就不行了 而95之前的数都可以 很奇怪的现象 谢谢了
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
void main()
{   float  a,x,y=1,s=1,p=1,t;
     int m=1,n=0;
     printf("please input a float number");
     scanf("%f",&a);
     x=a*PI/180.0;
     do
     { y=y*x*x;
       n=n+2;
       m=m*n*(n-1);
       s=-s;
       t=s*y/m;
       p=p+s*y/m;
     }
     while(fabs(t)>1e-6);
     printf("泰勒近似植为%f\n",p);
     printf("计算器结果为%f\n",cos(x));

}
搜索更多相关主题的帖子: 输入 现象 
2010-04-13 21:06
何少仪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:170
注 册:2010-3-6
得分:5 
估计到最大值啦,用long double就可以的,,,,,,

[b] 你要有勇气去听从你直觉和心灵的指示,所有其他的事情都是次要的。
2010-04-13 21:33
freegod
Rank: 2
等 级:论坛游民
帖 子:33
专家分:73
注 册:2010-4-12
得分:5 
输入<96时,
,程序正常
输入>96时,进入死循环,

lz换种方法吧
2010-04-13 21:53
遥望江南hsj
Rank: 1
等 级:等待验证会员
帖 子:29
专家分:0
注 册:2010-4-13
得分:0 
非常感谢 但我按照你的方法试了一下 结果还是一样啊 是怎么回事啊
2010-04-13 22:19
何少仪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:170
注 册:2010-3-6
得分:0 
while(fabs(t)<1e-6);  这样就可以啦。。。。。。判断t是否为0;


n=0,m=0;t,p都是无穷大,这就问题。

[ 本帖最后由 何少仪 于 2010-4-13 22:38 编辑 ]

[b] 你要有勇气去听从你直觉和心灵的指示,所有其他的事情都是次要的。
2010-04-13 22:19
遥望江南hsj
Rank: 1
等 级:等待验证会员
帖 子:29
专家分:0
注 册:2010-4-13
得分:0 
3楼的朋友 非常谢谢你的回复 但我的电脑上输入96时是什么结果也没有啊 你的结果怎么这么多啊 是编译器不一样吗
2010-04-13 22:21
遥望江南hsj
Rank: 1
等 级:等待验证会员
帖 子:29
专家分:0
注 册:2010-4-13
得分:0 
改成小于号是什么道理啊 你可以试一下 应该是不正确的吧 我刚学C语言 只有请你们帮我解疑答惑了
2010-04-13 22:25
liuchaohuhu
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2010-4-10
得分:5 
m的值可能越界了
2010-04-14 19:18
liuchaohuhu
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2010-4-10
得分:0 
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
void main()
{   double  a,x,y=1,s=1,p=1,t;
     long m=1,n=0;
     printf("please input a float number:");
     scanf("%lf",&a);
     x=a*PI/180.0;
     do
     { y=y*x*x;
       n=n+2;
       m=m*n*(n-1);
       s=-s;
       t=s*y/m;
       p=p+t;
     }while(fabs(t)>1e-5);
     printf("jishizhi=%lf\n",p);
     printf("jiegu=%lf\n",cos(x));
      getch();
}
m,y可能越界,由于我在win TC下运行,win TC无法显示中文,所以把中文改成了英文
输入112时,结果如下:
 
  

2010-04-14 19:44
liuchaohuhu
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2010-4-10
得分:0 
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
void main()
{   double  a,x,y=1,s=1,p=1,t;
     long m=1,n=0;
     printf("please input a float number:");
     scanf("%lf",&a);
     x=a*PI/180.0;
     do
     { y=y*x*x;
       n=n+2;
       m=m*n*(n-1);
       s=-s;
       t=s*y/m;
       p=p+t;
     }while(fabs(t)>1e-5);
     printf("jishizhi=%lf\n",p);
     printf("jiegu=%lf\n",cos(x));
      getch();
}
m,y可能越界,由于我在win TC下运行,win TC无法显示中文,所以把中文改成了英文
输入112时,结果如下:
2010-04-14 19:45



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




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

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