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

一维数组输出杨辉三角

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

#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 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决