C++学习笔记(第四章 函数的应用及多文件组织 之二)

【题目1-当年第几天】

  定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。




【题目2-太乐了】先听故事,再编程序。
  故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?他说:是啊,太乐了!

  用sin和cos的泰勒展开式编程序,求出sin(π/2)、sin(56°)、cos(87°)、cos(π/3),当最后一项的绝对值小于0.00001时,累加结束(求绝对值的函数也可以自定义函数myabs实现)。

下面是程序模板,请完成自定义函数的声明和定义,并将main函数中下划线部分补充完整。

<span style="font-size:14px;">#include <iostream>
using namespace std;
const double pi=3.1415926;
int main( )
{
    cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
    cout<<"sin(56°)的值为"<<_____________<<endl;
    cout<<"cos(87°)的值为"<<mycos((87.0/180)*pi)<<endl;
    cout<<"cos(π/3)的值为"<<______________<<endl;
    return 0;
}
//下面定义mysin函数,求sin值

//下面定义mycos函数,求cos值

//下面定义myabs函数,求绝对值
</span>

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

<span style="font-size:14px;">sin(π/2)的值为1
sin(56°)的值为0.829038
cos(87°)的值为0.052336
cos(π/3)的值为0.5</span>



【题目3-多文件程序组织】




【题目4-学习辅助软件开发】通过本题学习一些系统函数。
  第一组是数学函数,需要#include<cmath>支持,包括log、log10、 pow、 pow10、 sqrt、 acos、 asin、 atan、 cos、 sin、 tan、 cosh、 sinh、 tanh、 ceil、 floor。
  第二组是时间函数,需要#include<ctime>的支持。暂介绍一个函数long time(long *tloc)。调用time(0)将返回自格林威治时间1970年1月1日凌晨至现在所经过的秒数。显然,下面的代码可以用于测试一段代码运行的时间:

<span style="font-size:14px;">#include <iostream>
#include<ctime>
using namespace std;
int main(void)
{
    int i,ran_num=0;
    double t1,t2;
    t1=time(0);
    //将要测试的代码放在这里,因为计数单位为秒。
    t2=time(0);
    cout<<"运行耗时"<<t2-t1<<"秒!"<<endl;
    return 0;
}</span>




第三组是随机数函数,需要#include<cstdlib>支持。(1)void srand(unsigned seed)用于初始化随机数发生器,参数seed称作为“种子数”,用不同的种子数可以产生不一样的序列,故time(0)的返回值常用作种子数。(2)int rand()产生一个0到RAND_MAX(一个系统内已经定义的很大的数)的整型随机数并返回。例如,下面的程序产生10个0~5的随机数

<span style="font-size:14px;">#include <iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main(void)
{
    int i,ran_num;
    srand(time(0)); //time(0)返回值作种子
    for(i=0; i<10; i++)
    {
        ran_num=rand()%6; //rand()返回值对6取余保证了随机数为0~5。
        cout<<ran_num<<"  ";
    }
    return 0;
}</span>




练习1——猜数字游戏
  
随机产生一个1000内的数字,要求用户猜测这个整数。输入一个猜测想的整数,判断是否与产生的随机数相等,由屏幕显示判断结果。如果猜得不对,给出“大了”或“小了”的提示,直到猜出这个数为止。(可以再加一个要求,猜了几次才得到正确结果。)
练习2——小学生算术能力测试系统
  设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供10道加、减、乘、除四种基本算术运算的题目,每道题中的操作数是随机产生的,且操作数不超过2位数的正整数;练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息。最后显示做对了几道题。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值