动态数组里的值怎么修改呢?为什么打印不出来
#include<iostream>using namespace std;
//打印帕斯卡三角形
int main()
{
int i;
cout << "请输入要打印的行数:";
cin >> i;
int* array = new int();//动态数组,记得要释放掉内存
for (int k = 0; k < i; k++)
{
//左右边界赋初值1
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;`尝试给数组元素赋值是不正确的。
首先,你需要为动态数组分配内存空间。在你的代码中,你已经为动态数组分配了内存空间,但是只有一个数组元素,并没有给它分配足够的内存空间。
所以,首先要修改的地方是:将`int* array = new int();`改为`int* array = new int;`,这样就能为动态数组分配`i`个整数的内存空间。
然后,你可以使用数组索引来给数组赋值。例如,`array = 1;`和`array = 1;`可以分别给数组的第一个和第二个元素赋值为1.
最后,你需要在循环结束之前,使用`delete[] array`释放动态数组占用的内存空间。
下面是修改后的完整代码:
#include <iostream>
using namespace std;
//打印帕斯卡三角形
int main()
{
int i;
cout << "请输入行数: ";
cin >> i;
int* array = new int;//动态数组,记得要释放掉内存
for (int k = 0; k < i; k++)
{
//左右边界赋初值1
array = 1;
array = 1;
//打印格式
for (int l = 1; l < i -k; l++)
{
cout << " ";
}
//计算并打印中间的数值
for (int j = 1; j < k; j++)
{
array = array + array;
}
for (int j = 0; j <= k; j++)
{
cout << array << " ";
}
cout << endl;
}
delete[] array; // 释放内存
return 0;
}
现在你应该能够正确地打印出帕斯卡三角形了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 我在打印的那个地方出错了 叶落了 发表于 2023-12-25 19:30
我在打印的那个地方出错了
抱歉,我看到你在打印帕斯卡三角形的代码中存在一些错误。下面是修正后的代码:
#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;// 每一行的元素个数为行数加1
// 左右边界赋初值1
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;
}
在这个代码中,我们使用了一个二维动态数组`array`来存储帕斯卡三角形的值。首先,我们为每一行分配了对应个数的内存空间。然后,在循环中,我们通过计算上一行的元素来确定当前行的元素值。最后,我们打印出每一行的元素,完成帕斯卡三角形的输出。请注意,在使用完动态数组后,我们需要逐行释放内存空间。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]