返回:贺老师课程教学链接  项目要求

【项目7-太乐了】
先听故事,再编程序。
故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?sin说:是啊,太乐了!
故事讲完了。下面是sin函数的泰勒展式:
(注:x取弧度值,而非角度值)
用sin泰勒展式编写程序,求出sin(π/2)和sin(56°)的值,精度要求达到小数点后6位(即当最后一项的绝对值小于0.00001时,累加结束,求绝对值的函数也可以自定义函数myabs实现)。
下面是程序模板,请完成自定义函数的声明和定义,并将main函数中下划线部分补充完整。

#include<stdio.h>
#define pi 3.1415926
double mysin(double x);
double myabs(double x);
int main( )
{printf("sin(π/2)的值为%.5f\n", mysin(pi/2));printf("sin(56°)的值为%.5f\n", ___________);return 0;
}//下面定义mysin函数,求sin值//下面定义myabs函数,求绝对值

说明:sin听相声“太乐”了,变成了多项式,连太太cos都不认识了。利用泰勒公式将任意函数展开为多项式进行计算,是计算机求解数值问题的一个重要手段。高等数学中的“泰勒定理”为我们解决这一大类问题提供了理论依据与方法指导。高等数学、线性代数等课程为我们提供解决各种问题的基础知识,是大学中最为实用的学科,学好,必须的。
实际上,C语言的数学库(#include<math.h>)中已经提供了sin和cos函数,以及求绝对值的函数fabs,一般解题中我们直接调用即可,而本题要求自定义函数实现,为区别起见,分别起名为mysin、mycos、myabs。
提示:程序的输出应该为:

sin(π/2)的值为1
sin(56°)的值为0.82904(小数点后保留5位时)

[参考解答]

#include<stdio.h>
#define pi 3.1415926
double mysin(double x);
double myabs(double x);
int main( )
{printf("sin(π/2)的值为%.5f\n", mysin(pi/2));printf("sin(56°)的值为%.5f\n", mysin((56.0/180)*pi));return 0;
}
//下面定义mysin函数,求sin值
double mysin(double x)
{double sum=x,x_pow=x,item,fact=1;int n=1,sign=1;     //定义变量时赋初值,已经将第一项考虑到累加和sum中do{fact=fact*(n+1)*(n+2);  //fact用于表示阶乘,在公式中作分母x_pow*=x*x;             //x_pow是分子中用于表示阶乘,在公式中作分母sign=-sign;             //确定即将要累加的这一项的符号item =x_pow/fact*sign; //计算出要累加的项sum+=item;              //将该项累加上去n+=2;}while(myabs(item)>1e-5);return sum;
}//下面定义myabs函数
double myabs(double x)
{return ((x>=0)?x:-x);
}

注:fact类型取double型而非int型,是因为当n>12时,int型会溢出,导死循环。

《C语言及程序设计》实践参考——太乐了相关推荐

  1. C语言及程序设计 实践参考——个人所得税计算器switch语句版

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  2. C语言及程序设计 实践参考——定期存款利息计算器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  3. C语言及程序设计 实践参考——个人所得税计算器if语句版

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  4. 法雷序列的c语言程序,程序设计实践(一).PDF

    程序设计实践(一) 程序设计实践(一): 风格.设计和实现 王新宇 2004.10.16 Outline 风格 原则 示例 设计和实践 马尔可夫链(Markov Chain) C, JAVA, C++ ...

  5. C语言课间程序设计实践报告

    <贪吃蛇>简介      玩家使用方向键操控一条长长的蛇不断吞下豆子,同时蛇身随着吞下的豆子不断变长,当蛇头撞到蛇身或障壁时游戏结束.贪吃蛇最初为人们所知的是诺基亚手机附带的一个小游戏,它 ...

  6. 《C++语言基础》实践参考——友元类

    返回:贺老师课程教学链接 [项目5-友元类] 定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期.时间都处理更好) class Dat ...

  7. 《C++语言基础》实践参考——我的向量类

    返回:贺老师课程教学链接 项目要求 [项目4-我的向量类] 建立一个向量类MyVector,声明如下,请完成类的定义 class MyVector //定义向量类 { public:MyVector( ...

  8. 《C++语言基础》实践参考——考了语文数学的学生

    返回:贺老师课程教学链接 [项目4 - 考了语文数学的学生] 下面提供了类Stu的数据成员定义,和用于测试的main函数,参考如图的运行结果,完成类的定义,并用多文件形式组织程序 #include&l ...

  9. 《C++语言基础》实践参考——复数模板类

    返回:贺老师课程教学链接 [项目6-复数模板类]     阅读教材例10.1.该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的.可以通过模板类的技术手段,设计Co ...

最新文章

  1. 终于有人把云计算、物联网和大数据讲明白了!
  2. RNA-seq需要多长的读长?
  3. 自动更新变成灰色的解决方法
  4. 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(权重,盒子模型)
  5. tesseract-ocr的安装及使用
  6. [css] 请你解释下什么是浮动和它的工作原理是什么?同时浮动会引起什么问题?
  7. 带你了解Node.js包管理工具:包与NPM
  8. linux的manual手册不存在,在 Linux 命令行下使用“原力”
  9. linux 创建交换文件格式,Linux系统下的交换分区和交换文件的含义 (创建交换分区文件基本文件的swap)...
  10. ManualResetEvent实现线程的暂停与恢复
  11. 浅析DNS劫持和HTTP劫持
  12. 关于weight decay
  13. 配置服务器获取信息失败,获取配置服务器失败
  14. 导出虚拟机的OVF 模板
  15. Visual Studio中的rc是什么文件
  16. 数据结构与算法:B树(B-Tree)定义及搜索、插入、删除基本操作
  17. 原来棒棒糖还有这功能~
  18. 送书 | 聊聊逆向爬取数据
  19. HTTP协议(深入http请求)
  20. Maven+Dubbo+Mybatis+SpringBoot构建JavaWeb项目

热门文章

  1. [日推荐] 『地铁查询』全国地铁尽在手中,不怕迷路!
  2. centOS6.4部署svn
  3. (C#基础) byte[] 之初始化, 赋值,转换。
  4. 使用 ADSync 集成 IBM Lotus Domino Directory 和 Microsoft Active Directory
  5. Convert your single instance to 10g RAC by manual
  6. Delphi 正则表达式起步
  7. 问题三十八:C++中bad alloc问题(1)——分析问题
  8. mysql查询未讲课教师_经典教师 学生 成绩sql面试题再次来袭3(附答案)
  9. 大数据技术有什么优势
  10. 如何针对大数据进行分析