【项目1-求最大公约数】 參考解答

(1)输入两个数。并求出其最大公约数

#include <iostream>
using namespace std;
//自己定义函数的原型(即函数声明)
int main()
{
int a,b,g;
cin>>a>>b;
g=gcd(a,b);
cout<<"最大公约数是: "<<g;
return 0;
}
int gcd(int x,int y) //定义用于求两数的最大公约数的函数,函数仅仅管求值。输出由main完毕
{ }

  (2)在上面程序基础上。添加函数gcds函数的声明和定义。实现求4数最大公约数的功能

int gcds(int x,int y,int z,int w)   //调用gcd()求四数的最大公约数
{ }

提示:

①既然gcd函数已经实现了求两数最大公约数的功能,gcds能够调用gcd分别求出两对的最大公约数,再求最大公约数的最大公约数。

②改动main函数,以完毕对新新定义的函数的測试。

  (3)利用单步调试工具,step into到函数内部观察程序的执行,掌握进入到函数“内部”观察其执行情况的方法。

【项目2-太乐了】參考解答

  话说sin和cos是一对夫妇。

一天,sin去听相声了,cos在家。过了一会,有人敲门。cos开门一看。是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?sin说:是啊。太乐了!

  故事讲完了。以下是sin函数的泰勒展式:

  (注:x取弧度值,而非角度值)

  用sin泰勒展式编敲代码。求出sin(π/2)和sin(56°)的值。精度要求达到小数点后6位(即当最后一项的绝对值小于0.00001时,累加结束,求绝对值的函数也能够自己定义函数myabs实现)。

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

#include <iostream>
using namespace std;
const double pi=3.1415926;
int main( )
{
cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
cout<<"sin(56°)的值为"<<_____________<<endl;
return 0;
}
//以下定义mysin函数,求sin值 //以下定义myabs函数。求绝对值

提示1: 实际上,C++的数学库(#include<Cmath>)中已经提供了sin和cos函数,一般解题中我们直接调用就可以,而本题要求自己定义函数实现,为差别起见,分别起名为mysin和mycos。

提示2: 程序的输出应该为:

  sin(π/2)的值为1

  sin(56°)的值为0.829038

【项目3-随机数函数应用于游戏】

  (1)猜数字游戏 參考解答

  随机产生一个1000内的数字,要求用户推測这个整数。输入一个推測想的整数。推断是否与产生的随机数相等。由屏幕显示推断结果。

假设猜得不正确,给出“大了”或“小了”的提示,直到猜出这个数为止。(能够再加一个要求,猜了几次才得到正确结果。)

  (2)小学生算术能力測试系统 參考解答

  设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供10道加、减、乘、除四种基本算术运算的题目,每道题中的操作数是随机产生的,且操作数不超过2位数的正整数;练习者依据显示的题目输入自己的答案,程序自己主动推断输入的答案是否正确并显示出对应的信息。最后显示做对了几道题。

【项目4-程序分析】

  写出以下程序的执行结果,并解析其执行机制。请描写叙述其执行流程及相关变量的变化过程,能够配合图示完毕,在博客中上传画出的图。

(1)

#include<iostream>
using namespace std;
void fun(int k)
{
if(k>0)
fun(k-1);
cout<<k;
}
int main()
{
int w=5;
fun(w);
cout<<endl;
return 0;
}

(2)

#include <iostream>
using namespace std;
void recur(char);
int main()
{
recur('0');
}
void recur(char c)
{
cout<<c;
if(c<'5')
recur(c+1);
cout<<c;
}

(3)

#include<iostream>
using namespace std;
int fun2(int a,int b)
{
int c;
c=a*b%3;
return c;
}
int fun1(int &a,int &b)
{
int c;
a+=a;
b+=b;
c=fun2(a,b);
return c*c;
}
int main()
{
int x=11,y=19;
cout<<fun1(x,y)<<endl;
return 0;
}

(4)理解函数的默认參数:执行程序,利用调试功能。观察变量和函数參数的值,结合课堂解说,品味默认參数的作用。

#include <iostream>
using namespace std;
const double pi=3.1415926;
float area(float r=6.5);//指定r的默认值为6.5
float volume(float h,float r=6.5); //指定r的默认值为6.5
int main( )
{
cout<<area()<<endl; //相当于area(6.5);
cout<<area(7.5)<<endl; //形參得到的值为7.5,而不是6.5
cout<<volume(45.6)<<endl; //相当于volume(45.6,6.5)
cout<<volume(34.2,10.4)<<endl; //h的值为34.2。r的值为10.4
return 0;
}
float area(float r)
{
return pi*r*r;
}
float volume(float h,float r)
{
return pi*r*r*h;
}

① 去掉第4行的“=6.5”试试,出错的原因是__________

② 将第14行改为“float area(float r=6.5)”,出错的原因是________

③ 将第5行“float h,float r=6.5”改为“float h=1,float r”,出错的原因是___

④ 将第5行改为“float volume(float h=0,float r=6.5)”。带来的改变将是__________

【项目5-用递归方法求解】 參考解答

(1)编写递归函数求出n的阶乘(自己定义main函数,调用定义的递归函数)

(2)写出求1*3*…*n的递归式,并编写出递归函数求解。

(3)编程序,用递归函数求出两个数的最大公约数。(包含编main函数。调用定义的递归函数)

(4)编制递归函数fib(int n)返回第n个Fibnacci数。以此输出Fibnacci序列的第20个数。

#include <iostream>
using namespace std;
int fib(int n);
int main(){
cout<<fib(20)<<endl; //输出
return 0;
}
//返回Fibnacci序列中的第n个数
int fib(int n)
{ }

2015级C++第4周项目 函数的更多相关文章

  1. 2015级C++第7周项目 友元、共享数据保护、多文件结构

    [项目1-成员函数.友元函数和一般函数有差别]參考解答 (1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码) //例:使用成员函数.友元函数和一般函数的差别 #include ...

  2. 2015级C++第2周实践项目

    [项目1 - 宣告"主权"] 你已经是CSDN博客主了,用IT人特有的方式,编一段程序.在屏幕上输出你想说的话.按要求公布博文,作为我们的开山之作. [项目2 - 胖子不想说体重] ...

  3. 2014秋C++ 第8周项目 分支程序设计

    课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...

  4. 关于举办 2015年 Autodesk 助力云应用项目开发活动通知

    各位尊敬的Autodesk 合作伙伴,大家好! 相信您在过去的一年里应该对Autodesk最新的云服务技术有所了解,您是不是曾经闪现过一些很好的想法,却由于不确定是否真实可行,或担心没有技术支持来帮助 ...

  5. JavaEDU614 团队第三周项目总结

    JavaEDU614 团队第三周项目总结 本周,根据项目计划完成模块的设计代码 本项目主要是完成俄罗斯方块的基本操作.用户可以自己练习和娱乐.需要满足以下几点要求. (1)界面控制游戏开始.暂停和结束 ...

  6. Surprise团队第三周项目总结

    Surprise团队第二周项目总结 项目进展 这周我们小组的项目在上周的基础上进行了补充,主要注重在注册登录界面的实现,以及关于数据库的一些学习. 在设计注册登录界面时,每一块的地方控件都不一样,比如 ...

  7. Surprise团队第二周项目总结

    Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在lay ...

  8. Surprise团队第一周项目总结

    Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...

  9. FromBottomToTop第十三周项目博客

    FromBottomToTop第十三周项目博客 本周项目计划 完成游戏核心算法以及界面相关类和怪物类 项目进展 用户可选择游戏模式,共有20张不同的地图. 炮台的建立和升级. 小怪的路径算法. 参考资 ...

随机推荐

  1. Linux上jdk的安装

    安装jdk    a.检测是否安装了jdk  运行java -version    b.若有需要将其卸载    c.查看安装那些jdk        rpm -qa | grep java    d. ...

  2. struts2 中文乱码问题,自定义过滤器通用解决方法

    问题描述 在JSP中使用form表单向后台action中传递中文参数,后台action接收到参数出现中文乱码.JSP页面统一采用了utf-8编码格式.由于struts2默认采用的编码为utf-8,根据 ...

  3. Python 解LeetCode:680. Valid Palindrome II

    题目:给定一个字符串,在最多删除一个字符的情况下,判断这个字符串是不是回文字符串. 思路:回文字符串,第一想到的就是使用两个指针,前后各一个,当遇到前后字符不一致的时候,有两种情况,删除前面字符或者删 ...

  4. 微信小程序入门(一)

    想必当你对官方文档了解地差不多的时候,一颗跃跃欲试的心就开始骚动了吧. 开发小程序之前的准备工作: 1).准备一个域名 2).准备一台云服务器 3).搭建小程序的后台,博主的小程序后台请求的的是自己写 ...

  5. stm32l053r8 nucelo板的串口实验

    stm32cubel0的HAL驱动实例中,基于stm32l53R8  nucelo板的官方串口通讯例程,是使用USART1实现在两块stm32l053r8 nucelo板间通讯.而在实际中,笔者手中只 ...

  6. java环境变量和tomcat环境变量配置

    一.JAVA环境变量的配置1.首先下载JDK JDK可以在Oracle(甲骨文)公司的官方网站http://www.oracle.com下载2.安装完成后查看JDK安装路径一般是C:\Program ...

  7. 【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画

    上一篇烂文中,老周给大伙伴们介绍过了几个比较好玩的动画.本篇咱们深化主题,说一说基于表达式的动画.这名字好理解,就是你可以用公式 / 等式来产生动画的目标值.比如,你想让某个可视化对象的高度减半,你的 ...

  8. Anaconda+linux +opencv+dlib安装

    准备文件Anaconda: https://www.anaconda.com/download/ 我下载的时最新的 64-Bit (x86) Installer (524 MB) 然后在下载的anac ...

  9. 常见优化算法统一框架下的实现:最速下降法,partan加速的最速下降法,共轭梯度法,牛顿法,拟牛顿法,黄金分割法,二次插值法

    常见优化算法实现 这里实现的主要算法有: 一维搜索方法: 黄金分割法 二次差值法 多维搜索算法 最速下降法 partan加速的最速下降法 共轭梯度法 牛顿法 拟牛顿法 使用函数表示一个用于优化的目标, ...

  10. 一个页面tab标签切换,都有scroll事件的解决办法

    当前页有多个tab,如果都有scroll事件, 先解绑$(window).off('scroll') 再执行scroll就不可以了,多个标签就不会互相干扰: 给你们个例子: //标签切换    $(' ...