为什么赋值成功了却打印不出来
#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;
} 在你的代码中,赋值语句 `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]