2015级C++第4周项目 函数

【项目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)
{

}
时间: 2024-11-17 20:41:49

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

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

[项目1-成员函数.友元函数和一般函数有差别]參考解答 (1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码) //例:使用成员函数.友元函数和一般函数的差别 #include <iostream> using namespace std; class Time { public: Time(int h,int m,int s):hour(h),minute(m),sec(s) {} void display1(); //display1是成员函数 friend voi

2015级C++第12周实践项目 运算符重载(一)

[项目1-实现复数类中的运算符重载] 参考解答 (1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r; imag=i;} Complex operator+(const Complex &c2); Complex operator-(const Complex &c2); Complex op

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

[项目1 - 宣告"主权"] 你已经是CSDN博客主了,用IT人特有的方式,编一段程序.在屏幕上输出你想说的话.按要求公布博文,作为我们的开山之作. [项目2 - 胖子不想说体重]參考解答 成年男性的标准体重公式为: 标准体重(kg)=身高(cm)?100 超标准体重20%为超重,比标准体重轻20%为超轻. 请编写C++程序,输入身高和体重,完毕以下的任务: (1)计算并输出标准体重. (2)计算出标准体重,当超重时.请给出提示. (3)计算出标准体重.当超重时给出提示.不超重时也给提

14周 项目2 形状类族中的纯虚函数

#include <iostream> using namespace std; class Shape { public: virtual double area()=0; }; class Circle:public Shape { public: Circle(double r):R(r) {} virtual double area() { return R*R*3.14; } protected: double R; }; class Rectangle:public Shape {

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

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看. 阅读并验证 阅读以下的两段程序,用"人脑"执行写出输出结果.再在计算机或手机上执行程序,对照自己写出的结果,进行反思.1.#include <iostream>using namespace std;int main(){    int a=1,b=2,c=3;

软件学院2015级软件工程专业培养方案

软件学院2015级软件工程专业培养方案   一.培养目标 本专业培养拥护党的基本路线,德.智.体.美等方面全面发展,适应新世纪计算机软件技术发展,培养适应管理.服务一线需要,具有良好的综合素质,掌握计算机软件开发和软件工程的基本理论.基本知识和基本技能,掌握软件开发模式.流行软件开发工具以及软件外包开发规范,在企事业或机关等单位从事计算机软件系统开发.运行维护.软件测试等工作的高素质应用型专门人才. 本专业主要分软件服务工程方向.金融服务工程方向.网络系统运维外包方向.软件服务工程方向是要为社会

第十一周项目1

#include <iostream> using namespace std; class Stu { public: Stu (int n,string nam); void display(); protected: int num; //学号 string name; //姓名 }; Stu::Stu(int n,string nam ) { num=n; name=nam; } void Stu::display() { cout<<"学号:"<

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

各位尊敬的Autodesk 合作伙伴,大家好! 相信您在过去的一年里应该对Autodesk最新的云服务技术有所了解,您是不是曾经闪现过一些很好的想法,却由于不确定是否真实可行,或担心没有技术支持来帮助您实现,亦或可能没有空余的时间,而导致这些美好的想法一直束之高阁?现在Autodesk ADN 部门希望能帮助大家实现!为了促进 Autodesk 最新的云应用技术推广,让更多Autodesk合作伙伴能够借助Autodesk 最新的云技术在当前设计行业的云应用浪潮中抓住涌现出的新商机,我们Autod

2015级计算机科学与技术软件工程(西北师范大学)助教总结

2015级计算机科学与技术软件工程(西北师范大学)助教总结 18年软件工程课程助教总结 非常有幸在上学期由代老师的推荐担任18年软件工程课程助教.在代老师.邹欣老师.周筠老师和郑蕊老师的监督和帮助下,我完成了助教工作.从开始的对助教工作的一知半解到最后的得心应手,都离不开老师和同学们的支持和配合. 虽然这是我第二次担任本科生助教,但是这次的助教工作才正式登堂入室.通过本次工作,我基本上搭建起来软件工程助教相关工作的框架,使我对助教工作有了深刻的理解,这对于下学期指导和帮助师弟师妹助教工作有巨大益