火灾模拟程序不知道如何初始化它
fire simulation program dont know how to initialize it
程序应该输出一个12x24的矩阵,该矩阵以0为界,中间有1,在(1,1)的位置有2,我不知道在哪个部分初始化M[row][col]=2;因为无论我把它放在哪里,它都不会输出2到第一个位置,有什么建议吗?
int main()
{
int M[N/2][N];
int ROWS, COLS, row, col;
int r, c;
ROWS = sizeof(M) / sizeof(M[0]);
COLS = sizeof(M[0]) / sizeof(M[0][0]);
fill(M, ROWS, COLS, 1, 1);
row=1;
col=1;
for(r=0; r< ROWS; r++)
{
for(c=0; c < COLS; c++)
{
if (r==0||r ==ROWS-1)
{
M[ROWS][COLS]=0;
}
else if(c==0||c==COLS-1)
{
M[ROWS][COLS]=0;
}
else {
M[ROWS][COLS]=1;
}
cout<< M[ROWS][COLS];
}
cout << endl;
}
print(M, ROWS, COLS);
return 0;
}
我注意到你使用ROWS
和COLS
作为for
循环内的数组索引…你可能是想使用循环变量r
和c
。
另外,对于常规变量使用大写的名字被认为是不好的形式C中的约定是只对宏使用大写标识符。
我打赌如果你写M[1][1]=2;就在行count <<M[ROWS][COLS]之前,您将看到您想要的输出。这样做是愚蠢的,因为这样您将重复地将单个位置(M[1][1])分配给相同的值——确切地说,是288次——但是如果每次打印时都将M[1][1]设置为正确的值,则不会打印错误的值。当然,还有更好的方法。
清晰地分离程序执行的操作会好得多。它必须做两件事:
- 初始化数组
- 打印数组的内容
这些操作应该由不同的函数执行。也就是说,一次调用一个函数来初始化整个数组,然后调用另一个函数来打印整个数组。这样,在打印任何单元格之前,数组中的每个单元格都被设置为正确的值。
如果你这样做,你应该很容易就能在你的代码中找到一个合适的地方设置M[1][1]=2,这样你就能看到正确的打印输出。
我假设这是一个练习,稍后将扩展到对数组做更多的事情,因此首先使用数组是有意义的。如果是这样,您很有可能需要在某个时候再次打印数组,然后您会非常高兴自己编写了一个函数,该函数打印数组,而不做任何其他操作。
相关文章:
- 在C/C++中执行"_dl_init"(程序初始化)是单线程的吗
- 内存清理程序报告全局对象构造中未初始化值的使用
- 为什么我的 c++ 程序检查不是初始化的变量?
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- 程序如何知道静态变量是否需要初始化?
- 初始化和终止Qt应用程序的正确方法?
- 没有用于初始化模拟工厂的匹配构造函数
- 指定的初始化程序
- 错误:为函数__THROW__asm提供了初始化程序
- C++引物动态数组初始化程序的数目超过大小
- 在C++初始化程序列表中使用Integer Literals
- 使用聚合初始化模拟默认函数参数是否存在任何陷阱?
- 程序在初始化期间未与数组一起运行
- 程序在没有输入的情况下退出,它有基本的,驱动的类属性初始化问题
- 如何在程序中动态初始化对象
- DLL – 在 DLL 初始化时填充的静态向量,向客户端程序返回零大小
- 程序告诉我初始化在编写简单的C ++代码时不需要初始化的变量
- 回文程序和条件跳转或移动取决于未初始化的值
- 要释放动态数组初始化时程序崩溃
- 火灾模拟程序不知道如何初始化它