第十二周模板

第11讲 课后自主学习及实践方案 代码

【项目1- 阅读程序】
(1)阅读下面两个有静态局部变量的程序

#include <iostream>
using namespace std;
int f(int n);
int main()
{
    cout<<f(5)<<"  ";
    cout<<f(8)<<endl;
    return 0;
}
int f(int n)
{
    static int a=2;
    int b=0;
    a+=n;
    b+=a;
    return b;
}
预计运行结果是:__________________
实际运行结果是:__________________

#include <iostream>
using namespace std;
int func (int a,  int b)
{
    static int m=0, i=2;
    i+=m+1;
    m=i+a+b;
    return m;
}
int main()
{
    int k=4, m=1, p;
    p=func(k, m);
    cout<<p<<endl;
    p=func(k, m);
    cout<<p<<endl;
    return 0;
}
预计运行结果是:__________________
实际运行结果是:__________________

  (2)阅读下面两个有全局变量的程序

#include <iostream>
using namespace std;
int  a=3, b=5;
int max(int a, int b)
{
    int c;
    c=a>b? a:b;
    return  c;
}
int main()
{
    int a=8; //若无这一句,又将如何?
    cout<<max(a,b)<<endl;
    return 0;
}
预计运行结果是:__________________
实际运行结果是:__________________

#include <iostream>
using namespace std;
void cude();
int main()
{
    extern int x;//去掉extern及本行全删除会怎样?
    x=5; //去掉这一句呢?
    cude();
    cout<<x<<endl;
    return 0;
}
int x=10;
void cude()
{
    x=x*x*x;
}
预计运行结果是:__________________
实际运行结果是:__________________


  (3)阅读下面两个包含有递归函数的程序


#include <iostream>
using namespace std;
void f(int);
int main()
{
    int i=1234;
    f(i);
    return 0;
}
void f(int n)
{
    if(n==0)
        return;
    else
    {
        f(n/10);
        cout<<n%10;
        return;
    }
}
预计运行结果是:__________________
实际运行结果是:__________________


#include <iostream>
using namespace std;
int sub(int);
int main()
{
   int i=5;
   cout<<sub(i)<<endl;
}
int sub(int n)
{
   int a;
   if (n==1)
    return 1;
   a=n+sub(n-1);
   return a;
}
预计运行结果是:__________________
实际运行结果是:__________________
 
  (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;
}

  (5)理解函数模板
#include <iostream>
using namespace std;
template<typename T>        //模板声明,其中T为类型参数
T max(T a,T b,T c)          //定义一个通用函数,用T作虚拟的类型名
{
    if(b>a) a=b;
    if(c>a) a=c;
    return a;
}
int main( )
{
    int i1=185,i2=-76,i3=567;
    double d1=56.87,d2=90.23,d3=-3214.78;
    long g1=67854,g2=-912456,g3=673456;
    cout<<"i_max="<<max(i1,i2,i3)<<endl; //调用模板函数,此时T被int取代
    cout<<"f_max="<<max(d1,d2,d3)<<endl; //调用模板函数,此时T被double取代
    cout<<"g_max="<<max(g1,g2,g3)<<endl; //调用模板函数,此时T被long取代
    cout<<"c_max="<<max('1','a','A')<<endl; //调用模板函数,此时T被long取代
    return 0;
}


【项目3-用递归方法求解】


(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)
{ }


(5)输入一个整数n,要求输出对应的二进制形式,请用递归函数实现。
#include <iostream>
using namespace std;
int main()
{
  int n;
 cout<<"请输入一个整数:";
 cin>>n;
 cout<<n<<"对应的二进制形式为:";
 dec2bin(n);  //输出n对应的二进制串
 cout<<endl;
 return 0;     
}
void dec2bin(int n)
{ }


(6)汉诺塔

    
参考代码如下:
int main()
{
 move(4,'A','B','C');
 return 0;
}
//有n个盘子,
void move(int n, char A, char B,char C)
{
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的Anthony

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值