在你的代码中,赋值语句 `array = 1;` 错误地使用了赋值运算符(`=`)而不是赋值给数组元素的操作(`[]`)。这样的赋值只会将 `array` 指针的值改变为 `1`,而不会修改数组中的元素。
另外,你在每次循环中都用 `array = new int();` 重新分配内存,并且没有释放掉之前的内存。这会导致内存泄漏。我们只需要一次性分配足够的内存即可。
下面是修复后的代码:
- #include <iostream>
- using namespace std;
- //打印帕斯卡三角形
- int main()
- {
- int i;
- cout << "请输入帕斯卡三角形的行数:";
- cin >> i;
- // 动态分配一个数组来保存帕斯卡三角形
- int** array = new int*[i];
- for (int k = 0; k < i; k++)
- {
- array[k] = new int[k+1];
- array[k][0] = 1;
- array[k][k] = 1;
- // 计算帕斯卡三角形的值
- for (int l = 1; l < k; l++)
- {
- array[k][l] = array[k-1][l-1] + array[k-1][l];
- }
- }
- // 打印帕斯卡三角形
- for (int k = 0; k < i; k++)
- {
- for (int l = 0; l <= k; l++)
- {
- cout << array[k][l] << " ";
- }
- cout << endl;
- }
- // 释放内存
- for (int k = 0; k < i; k++)
- {
- delete[] array[k];
- }
- delete[] array;
- return 0;
- }
复制代码
在这个修复的代码中,我们首先通过 `new int*[i ]` 动态地分配了一个指针数组,用于保存帕斯卡三角形的每一行。然后在每次循环中,通过 `new int[k+1]` 动态地分配一个数组来保存当前行的元素。接着,我们使用 `[]` 进行赋值,将正确的值赋给数组元素。最后,我们在打印完成后释放了所有动态分配的内存。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。