视觉C++随机数 1,0 不起作用

visual C++ Random Number 1,0 Not Working

本文关键字:不起作用 C++ 随机数 视觉      更新时间:2023-10-16

我正在尝试将X或O放入数组中。 然而,它似乎不起作用。 它说,"运行时检查失败 #2 - 变量 'row1' 周围的堆栈已损坏。

char row1[19];
char row2[19];
char row3[19];
char row4[19];
for (int i = 0; i < 20; i++)
{
    int r = int(((double) rand() / (RAND_MAX)) + 1);
    if (r == 0)
    {
        row1[i] = 'X';
    }
    else
    {
        row1[i] = 'O';
    }
}
cout << row1[0] << endl;

如何生成随机 X 或 O? 谢谢。

正如elmigranto所说:你的循环是不正确的。它应该是:

for (int i = 0; i < 19; i++)

这是因为char row4[19];是一个包含 19 个元素的数组。第一个元素是row4[0]的,最后一个元素是row4[18]的,因为编号从 0 开始。所以在最后一个循环中row[19]会导致错误。

如果你想要抛硬币,你可以做类似的事情

char row1[20];
char row2[20];
char row3[20];
char row4[20];
for (int i = 0; i < 20; i++)
{
    int r = rand() % 2;
    if (r == 0)
    {
        row1[i] = 'X';
    }
    else
    {
        row1[i] = 'O';
    }
}

虽然我不知道 row2 - row4 在您的代码中的用途。row1[19] 会发生堆栈损坏,因为您只指定了 19 个元素,但 0..19 表示需要 20 个元素。

const int arr_size = 19;
char row1[arr_size];
for (int i = 0; i < arr_size; ++i) {
    row1[i] = rand() % 2 ? 'O' : 'X';
}