| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1191 人关注过本帖
标题:运行超时啊啊啊啊,大神帮我看看哪里错了
只看楼主 加入收藏
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
结帖率:84.21%
收藏
 问题点数:0 回复次数:7 
运行超时啊啊啊啊,大神帮我看看哪里错了
根据表达式:sinx=x- x^3/3! + x^5/5! - x^7/7! + ……  计算sinx的数值,最后一项的绝对值大于0.00001。

input
有多组数据,每组1行,即x的值。

output
输出sinx的值。注意:结果保留5位小数。

sample_input
0
1
2
3
4


sample_output
0.00000
0.84147
0.90930
0.14112
-0.75680




我的程序:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
   double x;
    while(scanf("%lf",&x)!=EOF)
    {
        int i,j,l;
        double n=1,a,b,m=0;
       do
        {
        i=1;
        l=0;
        for(j=1;j<=i;j++)
            n=n*j;
        a=pow(x,i);
        b=(pow(-1,l))*a;
        m=m+b;
        i=i+2;
        l=l+1;


        }while(a>0.00001);
        printf("%.5f",m);

    }
    return 0;
}


[此贴子已经被作者于2016-2-6 10:47编辑过]

搜索更多相关主题的帖子: include double 表达式 绝对值 
2016-02-06 10:01
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
收藏
得分:0 
这个题没办法用for循环吧
2016-02-06 10:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用MuMuLee在2016-2-6 10:02:22的发言:

这个题没办法用for循环吧
估计他说的是利用泰勒公式 sinx=x-x^3/3!+x^5/5!-……,具体是不是我也不知道,既然楼主不肯说,那么我们最好识趣不问
2016-02-06 10:08
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
收藏
得分:0 
回复 3楼 rjsp
啊啊啊 没复制过来
公式是:x- x^3/3! + x^5/5! - x^7/7! + ……
2016-02-06 10:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <math.h>

int main( void )
{
    for( double x; scanf("%lf",&x)==1; )
    {
        x = fmod(x,6.28318530717958647692); // 防止x过大导致中间结果溢出

        double sinx = 0.0;

        double a=x, b=1;
        for( int i=1; a/b<-0.00001 || a/b>+0.00001; a*=-x*x, i+=2, b*=(i-1)*i )
            sinx += a/b;

        printf( "%.5f\n", sinx );
    }
    return 0;
}
2016-02-06 11:07
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
收藏
得分:0 
回复 5楼 rjsp
谢谢亲
我的程序哪里有问题?
2016-02-06 12:06
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
你的程序乱七八糟的,看不懂。
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double x;
    while(scanf("%lf",&x)!=EOF)
    {
      double a=x,b=1,c=0,sinx=x;
      int i=0;
      
      do
      {
        i++;
        if(i%2==0)
        {
          sinx-=c;
        }
        else
        {
          sinx+=c;
        }
        a=a*x*x;
        b=b*(2*i+1)*(2*i);
        c=a/b;
      }while(c>0.00001)
          
      printf("%.5f",sinx);
    }
    
    return 0;
}


[此贴子已经被作者于2016-2-6 12:28编辑过]


   唯实惟新 至诚致志
2016-02-06 12:25
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
收藏
得分:0 
回复 7楼 qq1023569223
谢。。。
2016-02-12 16:16
快速回复:运行超时啊啊啊啊,大神帮我看看哪里错了
数据加载中...
 
   



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

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