叶落了 发表于 2023-12-20 20:58:31

为什么赋值成功了却打印不出来

#include<iostream>

using namespace std;
//打印帕斯卡三角形
int main()
{
        int i;
        cout << "请输入要打印的行数:";
        cin >> i;

        int* array = new int();//动态数组,记得要释放掉内存
        for (int k = 0; k < i; k++)
        {
                array = 1;
                array = 1;
                for (int l = 1; l < i -k; l++)
                {
                        cout << " ";
                }
                for (int n = i - k; n <= i + k; n = n + 2)
                {
                        cout << array<<" ";
                }
                cout << endl;

                for (int m = i - k + 1; m < i + k; m = m + 2)
                {
                        if (k == i - 1)
                        {
                                break;
                        }
                        array = array + array;
                        //cout << array << endl;
                        cout << array << endl;
                }
        }
        delete[] array;
        return 0;
}

FishC 发表于 2023-12-20 20:59:50

在你的代码中,赋值语句 `array = 1;` 错误地使用了赋值运算符(`=`)而不是赋值给数组元素的操作(`[]`)。这样的赋值只会将 `array` 指针的值改变为 `1`,而不会修改数组中的元素。

另外,你在每次循环中都用 `array = new int();` 重新分配内存,并且没有释放掉之前的内存。这会导致内存泄漏。我们只需要一次性分配足够的内存即可。

下面是修复后的代码:

#include <iostream>

using namespace std;

//打印帕斯卡三角形
int main()
{
    int i;
    cout << "请输入帕斯卡三角形的行数:";
    cin >> i;

    // 动态分配一个数组来保存帕斯卡三角形
    int** array = new int*;
    for (int k = 0; k < i; k++)
    {
      array = new int;
      array = 1;
      array = 1;

      // 计算帕斯卡三角形的值
      for (int l = 1; l < k; l++)
      {
            array = array + array;
      }
    }

    // 打印帕斯卡三角形
    for (int k = 0; k < i; k++)
    {
      for (int l = 0; l <= k; l++)
      {
            cout << array << " ";
      }
      cout << endl;
    }

    // 释放内存
    for (int k = 0; k < i; k++)
    {
      delete[] array;
    }
    delete[] array;

    return 0;
}

在这个修复的代码中,我们首先通过 `new int*` 动态地分配了一个指针数组,用于保存帕斯卡三角形的每一行。然后在每次循环中,通过 `new int` 动态地分配一个数组来保存当前行的元素。接着,我们使用 `[]` 进行赋值,将正确的值赋给数组元素。最后,我们在打印完成后释放了所有动态分配的内存。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么赋值成功了却打印不出来