摩卡'λ 2022-10-16 01:41 采纳率: 60%
浏览 55
已结题

一维数组输出杨辉三角

#做了很久还是不会,能帮忙看一下是哪里错了嘛谢谢(;´д`)ゞ

#include <iostream>
using namespace std;

int shuzu(int n) { //确定数组个数,同时用于计算当前位置
    int f;
    if (n == 1) {
        int f = 1;
    }
    if (n > 1) {
        f = n + shuzu(n - 1);
    }
    cout << f;
    return (f);
}

int derta(int n) { //输出
    int a[shuzu(n) + 1];
    cout << shuzu(n) + 1;
    a[1] = 1;
    a[2] = 1;
    a[3] = 1;
    if (n == 1) {
        cout << 1;
    } else if (n == 2) {
        cout << 1 << endl;
        cout << 1 << " " << 1;
    } else {
        cout << 1 << endl;
        cout << 1 << " " << 1;
        for (int i = 3; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                if (j == 1 || j == i) {
                    cout << 1 << " ";
                } else {
                    a[shuzu(i - 1) + j] = a[shuzu(i - 2) + j] + a[shuzu(i - 2) + j - 1];
                }
            }
            cout << endl;
        }
    }
}

int main() {
    int n;
    cout << "输入要输出的行数" << endl;
    cin >> n;
    derta(n);
}
  • 写回答

4条回答 默认 最新

  • 关注

    修改的地方在代码里注释了,修改后运行结果:

    img

    4是输入,11是在你derta函数开始的地方的一个输出,从第三行开始是杨辉三角。

    代码:

    #include <iostream>
    using namespace std;
    
    int shuzu(int n) { //确定数组个数,同时用于计算当前位置
        int f;
        if (n == 1) {
            f = 1; //修改 int 去掉
        }
        if (n > 1) {
            f = n + shuzu(n - 1);
        }
        //cout << f;  //修改 删掉这一行
        return (f);
    }
    
    int derta(int n) { //输出
        int *a=new int[shuzu(n) + 1];
        cout << shuzu(n) + 1 << endl; //修改 加了个回车
        a[1] = 1;
        a[2] = 1;
        a[3] = 1;
        if (n == 1) {
            cout << 1;
        }
        else if (n == 2) {
            cout << 1 << endl;
            cout << 1 << " " << 1;
        }
        else {
            cout << 1 << endl;
            cout << 1 << " " << 1 << endl;//修改 添加了回车
            for (int i = 3; i <= n; i++) {
                for (int j = 1; j <= i; j++) {
                    if (j == 1 || j == i) {
                        cout << 1 << " ";
                        a[shuzu(i - 1) + j] = 1; // 修改 添加这一行
                    }
                    else {
                  
                        a[shuzu(i - 1) + j] = a[shuzu(i - 2) + j] + a[shuzu(i - 2) + j - 1];
                        cout << a[shuzu(i - 1) + j] << " "; //修改,添加这一行
                    }
                }
                cout << endl;
            }
        }
        return 0;
    }
    
    int main() {
        int n;
        cout << "输入要输出的行数" << endl;
        cin >> n;
        derta(n);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月24日
  • 已采纳回答 10月16日
  • 创建了问题 10月16日

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含