e>0 )的值,以一个空格分隔。

【输出形式】

输出迭代次数n和最后一次计算的sin(x)的值(以一个空格分隔,并且输出sin(x)时要求小数点后保留9位有效数字)。

【样例输入】

1.23 0.0000001

【样例输出】

7 0.942488802

【样例说明】

输入的x为1.23,精度值e为0.0000001。当n为5时,利用上述公式计算sin(x)的值为0.942489044,n为6时计算的结果为0.942488800,两结果之差的绝对值约为0.000000244,大于要求的精度值0.0000001,故需要继续迭代计算。当n为7时计算的结果为0.942488802,与n为6的计算结果之差的绝对值约为0.000000002,小于要求的精度值,所以最小迭代次数应为7,最后一次计算的sin(x)的值为0.942488802(小数点后保留9位有效数字)。

注意:

(1) 为保证计算精度,请使用double数据类型保存计算数据。

(2) 应至少迭代两次,即:n>=2。

解题思路与易错分析:

解题思路:可以很显然的看出这是一个有关迭代的问题(看着简单,其实很有坑),首先排除的就是递归,这玩意肯定会溢出,然后确定为迭代(老老实实的循环吧)

题目已经给出了通项公式,

注意:第一个易错点,一个选择用递推公式,a(n) = a(n-1)*x*x*(-1)/(2*n+1)/(2*n-1); 一个是用上面的公式(但会溢出,坑吧)

所以只能用第一种方法用递推公式

第二易错点:每项都会变号,也就是乘以一个-1,这里可能就会用pow(-1,x)来找规律以为很高大上(我就是其中的一个人)但是忽略一个问题你上面用的递推公式,

为用pow(-1,x)是判断的是这一项的正负号但你又乘上前一项的符号(坑吧)

其他这个题也没什么难点:

下面附上我的代码:

#include #include #include using namespace std;

//a(1) = x;

//a(n) = a(n-1)*x*x*(-1)/(2*n+1)/(2*n-1);

int main()

{

double x,e,value,oldvalue,total,oldtotal;

cin >> x >> e;

oldtotal = total = oldvalue = x;

int counter = 1;

while(true)

{

value = oldvalue*x*x*(-1)/(2*counter)/(2*counter+1);

total += value;

counter++;

if(counter > 1)

{

if(fabs(fabs(total)-fabs(oldtotal))<=e)

{

break;

}

}

oldtotal = total;

oldvalue = value;

}

cout << counter

}

编程小白,有错请指出!!

c语言利用公式求sin(x)的近似值,用下列公式计算sin(x)的近似值相关推荐

  1. c语言利用遍历求树高的程序,用C语言实现二叉树的遍历极其应用

    用C语言实现二叉树的遍历极其应用 [1][摘要]:<数据结构>是计算机系学生的一门专业技术基础课程,计算机科学各领域及有关的应用软件都要用到各种数据结构.C语言有较丰富的数据类型.运算符以 ...

  2. python语言公式求圆周率_通过Python实现圆周率的计算(公式方法和蒙特卡罗方法)...

    1.通过公式计算圆周率 当k正无穷 π=[1/16^k*(4/(8*k+1)-2/(8*k+4)- 1/(8*k+5)-1/(8*k+6))] 实现如下 #cal pi = 0 N = 100 for ...

  3. HTML语言利用函数求中位数,javascript-使用OnClick()计算用户放入HTML表中的数字的平均值...

    当前在识别我的HTML / JavaScript代码中的错误时遇到问题,这阻止了我的JavaScript函数计算由表用户输入的五个数字的平均值. 将数字输入所需的单元格后,单击"计算成绩&q ...

  4. c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...

    #include #include int f(int n) { if (n == 0 || n == 1) { return 1; } if (n == 2) { return 0; } retur ...

  5. c语言斐波那契数列前20项和,,c语言利用数组求斐波那契数列的前20项

    推荐回答 一.斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711 ...

  6. c语言编程序按下列公式计算e的值,编写程序,利用公式 ,求出e的近似值

    已知一个三角形中三条边的长度分别为a,b和c,编写程序利用公式求出三角形的面积,其中S=(a+b+c)/2.要求边长a. usingSystem;usingSystem.Collections.Gen ...

  7. c语言中求大于的函数,c语言编写函数,求一组数中大于平均值的数的个数.

    C语言编写程序 给定一组数,求大于0,等于0,小于0的数据个数 #define N 10 main(){int num1=0,num2=0,num3=0,i;for(i=0;i 一道C语言题目:求一组 ...

  8. Java题-利用递归方法求5!

    题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! 方法一: import java.util.Scanner; public class Ex22 {public static v ...

  9. 利用递归方法求10!

    题目:利用递归方法求10!. 程序分析:递归公式:fn=fn_1*4! public class Prog22{public static void main(String[] args){Syste ...

  10. Python练习——利用递归方法求!5(递归函数)

    Python 练习实例26 Python 100例 Python 100例 题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! def fact(j):sum=0if j==0:su ...

最新文章

  1. Yarn已过时!Kubeflow实现机器学习调度平台才是未来
  2. Oracle日期处理
  3. Git使用学习笔记 (一)
  4. 虚拟机增强工具的安装
  5. 3.3 超参数训练实战:Pandas vs. Caviar-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  6. C# json解析字符串总是多出双引号_Python小白必备知识:Python字符串详解
  7. 有关WriteableBitmap和BitmapImage之间的相互转换
  8. yii mysql_Yii2框架操作数据库的方法分析【以mysql为例】
  9. [剑指offer]面试题第[54]题[JAVA][二叉搜索树的第k大节点][递归][迭代]
  10. [HDU] 3491 Thieves
  11. mysql 分区表 限制_Mysql分区表使用的一些限制和需要注意的地方-阿里云开发者社区...
  12. Hyper-V提供创建三种类型的虚拟网络
  13. tensorflow 变量共享
  14. 电驴搜索服务器正在连接,电驴 电驴连接不上服务器-完美教程资讯
  15. android imageloader 路径,Android中的Universal-Image-Loader的使用
  16. 甲骨文大数据利器:内存数据库和一体机
  17. 芯盾时代人工智能全渠道业务安全防护方案:提供“业务+平台+建模服务”为核心的多场景反欺诈服务| 百万人学AI评选
  18. 淘宝/天猫获得店铺的所有商品、店铺列表接口API返回值说明
  19. 如何用人机料法环来分析产品质量?
  20. 黑金花大理石_请问黑金花大理石是什么样的,有哪些特点?

热门文章

  1. 5.项目上线流程管理规范
  2. ORA-00932: 数据类型不一致: 应为 -,但却获得 -
  3. react native 随手记之打包遇到坑
  4. Shopee平台发布针对疫情政策的通知
  5. win10 软路由_「保姆级」万晓博带你用软路由搭建家庭网络中心第1节-准备工作...
  6. python pip是什么的简写,python pip是什么
  7. 如何使用移动硬盘安装系统?
  8. #低码系列#如何设计一个低代码平台?
  9. 社会工程学工具集之钓鱼网站的制作
  10. 给出a-z,0-9,输出所有的3个字符的组合