c++高级程序设计语言实验五函数定义和调用

实验名称

函数定义和调用

实验目的

  1. 掌握定义函数的方法。
  2. 掌握函数实参与形参的对应关系,以及函数调用的值传递规则。
  3. 理解函数返回值的意义,掌握正确操作函数返回值的方法。
  4. 养成良好的程序设计习惯,程序书写风格。

实验任务

  1. 验证教材第五章例子程序ch05_01(第84页 修订版83页)、ch05_02(第87页 修订版86页)、ch05_03(第91页 修订版90页)。
  2. 5.1(书上P98 修订版P98)。 ex05_01

将ch04_08.cpp的程序修改为主函数调用isprime()函数的形式,以确定该数是否素数。(书上P71)

  1. 5.3(书上P99 修订版P98)。 ex05_03

将习题4.9打印九九乘法表改用函数调用的形式,适当取函数名,分别调用3种函数以输出不同格式。

  1. 5.5(书上P99 修订版P98)。 ex05_05

用非递归的函数调用形式求斐波拉契数列第n项。

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

比如,当输入5时,程序运行结果为5;当输入9时,程序运行结果为34。

  1. 5.9(书上P99 修订版P98)。 ex05_09

将习题4.10用递归方法求解

实验内容

  1. ch05_01

#include<iostream>

using namespace std;

   int func1();

   int func2();

int main()

{

func1();

cout << func2() << endl;

  

  

   return 0;

}

int func1()

{

   int n=12345;

   return n;

}

int func2()

{

   int m;

   return m;

}

  1. ch05_02

#include<iostream>

using namespace std;

void func();

void print(int a,int b,int n);

int n=1;

int main()

{

   static int a=a;

   int b= -10;

   print(a,b,n);

   b+=4;

   func();

   print(a,b,n);

   n+=10;

   func();

}

void func()

{

   static int a=2;

   int b=5;

   a+=2;

   n+=12;

   b+=5;

   print(a,b,n);

  

}

void print(int a,int b,int n)

{

   cout << "a:" << a << "\tb:" << b << "\tn:" << n<< endl;

}

  1. ch05_03

#include<iostream>

using namespace std;

int isnumber(char);

int main()

{

   char c;

   while((c=cin.get())!='\n')

   if(isnumber(c))

   cout << "you entered a digit" << endl;

   else

   cout << "you entered a non_digit"<< endl;

}

int isnumber(char ch)

{

   return (ch>='0'&&ch<='9')?1:0;

}

  1. ex05_01

#include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

void isprime()

{

  

   long a,b,l=0;

   cout << "please input two numbers "<< endl;

   cin >> a>> b;

   cout << "primes from\t" << a << "\tto" << b << "\tis :" << endl;

   if(a==2)

   cout << "2";

   if(a%2==0)

   a++;

   for(long m=a;m<b;m+=2)

   {

      int sqrtm = sqrt(m);

      int i;

      for(i=2;i<=sqrtm;i++)

      if(m%i==0)

      break;

      if(i>sqrtm)

      {

          if(l++%10==0)

          cout << endl;

          cout << setw(5) << m;

      }

   }

  

}

int main()

{

isprime();

   return 0;

}

  1. ex05_03

#include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

void table1()

{

for(int j=1;j<=9;j++)

{

 

   for(int i =1;i<=9;i++)

   {

      cout << j*i  << "\t    ";

   }

   cout << endl;

  

}

}

void table2()

{

for(int j=1;j<=9;j++)

{

 

   for(int i =1;i<=j;i++)

   {

      cout << j*i  << "\t    ";

   }

   cout << endl;

  

}

}

void m_head()

{

    for (int i = 1; i < 10; i++)

    {

        cout << i << "       ";

    }

    cout << endl;

    cout << "-----------------------------------------------------------------------" << endl;

}

void m_table()

{

    for (int i = 1; i <= 9; i++)

    {

        for (int j = 1,m=i-1; j < 10; j++,m--)

        {

            if (m > 0)//根据每行的规律把j的输出换成空格

            {

                cout << " \t";

            }

            else

            {

                cout << i * j << "\t";

               

            }

        }

        cout << endl;

    }

}

void table3()

{

   m_head();

   m_table();

}

int main()

{

   //table1();

   //table2();

   table3();

   return 0;

}

  1. ex05_05

#include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

   int n;

int Fib()

{

   int fib1=1;

   int fib2=1;

   int fib=0;

  

          if(n==1||n==2)

          {

             return 1;

          }

   for(int i =3;i<=n;i++)

   {

    

      fib=fib1+fib2;

      fib1=fib2;

      fib2=fib;

       

   }

return fib;

}

int main()

{

      cout << "请输入需计算的项数"<< endl;

      cin>> n;

cout <<"第"<<n<<"项为:"<< Fib() << endl;

   return 0;

}

  1. ex05_09

#include<iostream>

using namespace std;

int cow(int m)

{

    if (m == 1 || m == 2 || m == 3)

    {

        return 1;

    }

    else

    {

        return cow(m - 1) + cow(m - 3);

    }

}

int main()

{

    int num;

    cout << "请输入年数" << endl;

    cin >> num;

  

    cout << "第"<<num<<"年共" << cow(num) << "头" << endl;

    system("pause");

    return 0;

}

小结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值