【实训5-8】嵌套调用——杨辉三角
(总分25)


 【实训目的】学习嵌套调用   

【第 1 步】实训内容介绍

 实训内容:通过一个例子(杨辉三角)学习嵌套调用。
 前置条件:掌握函数的声明、定义和调用
 实训过程:
         1. 实训内容介绍
         2. 编写求阶乘函数
         3. 编写求杨辉三角项的函数,其中调用求阶乘函数
         4. 编写输出指定数量空格的函数,完成杨辉三角的编写
         5. 实训结束

【Jitor 校验第 1 步】我已阅读实训内容介绍 // 送分题。直接点击。

 

 

【第 2 步】编写求阶乘函数

 1、在项目 cpp5 中创建名为 cpp5_8 的源代码文件,如果项目不存在,则先创建项目,然后创建源代码文件。
 2、将下述代码复制到刚刚创建的 cpp5_8 中:

#include <iostream.h>

int factorial(int);

void main(void) {
         int n;
         cout << "输入N: ";
         cin >> n;

         cout << "n的附乘是 {" << factorial(n) << "}\n";
}
// 有关的函数写在下面

 然后编写一个求阶乘函数,代码见█████,运行结果如下:

输入N: 6
n的附乘是 {720}
Press any key to continue

代码如下:
// 从下一行开始复制。
#include <iostream.h>

int factorial(int);

void main(void) {
         int n;
         cout << "输入N: ";
         cin >> n;

         cout << "n的附乘是 {" << factorial(n) << "}\n";
}
// 有关的函数写在下面
int factorial(int n) {
         int f = 1;
         for(int i = 1; i <= n; i++)
                  f *= i;
         return f;
}
// 一直复制到上一行结束。

【Jitor 校验第 2 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。

 

 

【第 3 步】编写求杨辉三角项的函数

 编写求杨辉三角项的函数,其中调用求阶乘函数,代码见█████
 运行结果如下(要求空格、换行等完全相同):

输入N: 6
     1
     1     1
     1     2     1
     1     3     3     1
     1     4     6     4     1
     1     5    10    10     5     1
     1     6    15    20    15     6     1

代码如下:
// 从下一行开始复制。
#include <iostream.h>
#include <iomanip.h>

int factorial(int);
int cmn(int, int);

void main(void) {
         int n;
         cout << "输入N: ";
         cin >> n;

         for(int i=0;i<=n;i++) {
                  for(int j=0;j<=i;j++) {
                           cout<<setw(6)<<cmn(i,j);
                  }
                  cout << endl;
         }
}
// 有关的函数写在下面
int factorial(int n) {
         int f = 1;
         for(int i = 1; i <= n; i++)
                  f *= i;
         return f;
}

int cmn(int i, int j) {
         return factorial(i) / (factorial(j) * factorial(i - j));
}
// 一直复制到上一行结束。

【Jitor 校验第 3 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。

 

 

【第 4 步】编写输出指定数量空格的函数

 编写输出指定数量空格的函数,完成杨辉三角的编写,代码见█████
 运行结果如下:

输入N: 6
                       1
                    1     1
                 1     2     1
              1     3     3     1
           1     4     6     4     1
        1     5    10    10     5     1
     1     6    15    20    15     6     1

代码如下:
// 从下一行开始复制。
#include <iostream.h>
#include <iomanip.h>

int factorial(int);
int cmn(int, int);
void space(int);

void main(void) {
         int n;
         cout << "输入N: ";
         cin >> n;

         for(int i=0;i<=n;i++) {
                  space(n-i);
                  for(int j=0;j<=i;j++) {
                           cout<<setw(6)<<cmn(i,j);
                  }
                  cout << endl;
         }
}
// 有关的函数写在下面
int factorial(int n) {
         int f = 1;
         for(int i = 1; i <= n; i++)
                  f *= i;
         return f;
}

int cmn(int i, int j) {
         return factorial(i) / (factorial(j) * factorial(i - j));
}

void space(int n) {
         for(int i = 0; i < n; i++) {
                  cout << "   ";
         }
}
// 一直复制到上一行结束。

【Jitor 校验第 4 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。

 

 

【第 5 步】实训总结

 本次实训通过杨辉三角的例子,学习了函数的嵌套调用。总结如下:
         1. 一个函数可以调用另一个函数
         2. 一个大型的程序是由许多函数组成的
         3.主函数是程序的起点,所有的函数调用都是由主函数发起的

【Jitor 校验第 5 步】我已阅读实训总结 // 送分题。直接点击。

 

仍有疑问 ? 联系QQ 9429444(陈海云) : 返回首页