| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 24593 人关注过本帖
标题:c语言 利用泰勒级数计算sinx的值
取消只看楼主 加入收藏
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
c语言 利用泰勒级数计算sinx的值
利用泰勒级数计算sinx的值,要求最后一项的绝对值小于,并统计出此时累加了多少项。请用“利用前项来计算后项”的方法计算累加项,不要使用pow函数编写程序


程序的运行结果示例1:
Input x:
3↙
sin(x)=0.141,count=9

程序的运行结果示例2:
Input x:
10↙
sin(x)=-0.544,count=18


输入格式: "%f"

输出格式:
输入提示信息:"Input x:\n"
输出格式:"sin(x)=%.3f,count=%d\n"
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。



#include<stdio.h>
#include<math.h>
int f1(int n)
{
    int a ,b=1;
    for(a=1;a<=n;a++)
    {
        b=b*a;
    }
    return b;
}
 main()
{
    int d=1,c=3;
   
    float a,b=0,i,e;
    printf("Input x:\n",a);
    scanf("%f",&a);
    e=a*a*a;
   
    b=a;
    do
    {
        
        i=e/f1(c);
        if((d+1)%2==0)
        i=-i;
        b=b+i;
        d++;
        e=e*a*a;
        c=c+2;
    }while(fabs(i)>=1e-5);
    printf("sin(x)=%.3f,count=%d\n",b,d);
}



用例测试结果                    运行时间    占用内存    提示    得分
用例1未通过    --    0kb            运行时间超出限制                     0
用例2未通过    --    0kb            运行时间超出限制                     0
搜索更多相关主题的帖子: 编写程序 include 提示信息 绝对值 字符串 
2016-11-03 22:52
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 2楼 rjsp
对啊!我就发现是死循环,但我不知道是哪里溢出了,如果在我的代码上改应该怎么改呢?
2016-11-04 14:42
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 3楼 yogurtmai
是不是这样???




#include<stdio.h>
#include<math.h>
double f1(double n)
{
    double a ,b=1;
    for(a=1;a<=n;a++)
    {
        b=b*a;
    }
    return b;
}
 main()
{
    int d=1;
   
    double a,b,i,e,c=3;
    printf("Input x:\n",a);
    scanf("%lf",&a);
    e=-a*a*a;
   
    b=a;
    do
    {
        
        i=e/f1(c);
        b=b+i;
        d++;
        e=-(e*a*a);
        c=c+2;
    }while(fabs(i)>=1e-5);
    printf("sin(x)=%.3f,count=%d\n",b,d);
   


}
2016-11-04 14:44
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 2楼 rjsp
为什么我把scanf("%lf",&a);改为scanf("%f",&a);输出的答案就错了?
把它改为scanf("%lf",&a);就对了?
我输进去的数明明就是 3 啊
3 的float型和double型有什么区别??
2016-11-04 14:48
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 7楼 rjsp
要怎么改才可以让输入定义成float也可以顺利输出答案?? 题目要求的输入格式是“%f”
2016-11-04 20:36
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 6楼 九转星河
图片附件: 游客没有浏览图片的权限,请 登录注册


为什么我在VC上运行的答案和你的不一样??
2016-11-04 21:53
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 9楼 rjsp
明白了   谢谢
2016-11-04 21:53
yogurtmai
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-10-12
收藏
得分:0 
回复 6楼 九转星河
为什么加了这个便没有数据溢出了
 a=fmod(a,Pi);
是不是把精确度增加到小数点后七位??
2016-11-04 22:14
快速回复:c语言 利用泰勒级数计算sinx的值
数据加载中...
 
   



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

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