zoukankan      html  css  js  c++  java
  • 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)  
    {
    
    }
  • 相关阅读:
    广度优先搜索(一)
    快速幂
    office 2013
    最著名的十大公式
    二分查找的上下界
    双关键字快速排序
    字符串操作
    分治算法练习(二)
    P3119 [USACO15JAN]草鉴定[SCC缩点+SPFA]
    P3225 [HNOI2012]矿场搭建[割点]
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7137407.html
Copyright © 2011-2022 走看看