C++随机数1,0不工作
我试图在数组中放入X或O。然而,它似乎不起作用。它说,运行时检查失败2-变量“row1”周围的堆栈已损坏C++随机数1,0不工作,c++,visual-c++,C++,Visual C++,我试图在数组中放入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';
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?谢谢。如果你想掷硬币,你可以这样做
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';
}
}
虽然我不知道第2行-第4行在代码中的作用。第1行[19]发生堆栈损坏,因为您只指定了19个元素,但0..19表示需要20个元素。正如elmigranto所说:您的循环不正确。应该是:
for (int i = 0; i < 19; i++)
这是因为char row4[19];是一个包含19个元素的数组。第一个元素是第4[0]行,最后一个元素是第4[18]行,因为编号从0开始。因此,在最后一个循环中,行[19]将导致错误。不是20,而是19 in,表示int i=0;i<19;i++.@user1477388 int数组[n]的有效索引;是0对n-1。我就把它放在这里:不,你想得太多了,行1[19]给你19。@user1477388声明数组行1[19]会创建一个包含19个元素的数组。可通过索引0-18访问这些。在数组声明的括号中放的是数组的元素数。谢谢,这很简单,我以前也做过。我不想在这里应用它。好主意。啊,我现在明白了。它只是数字到18,而不是19。问了问题后我通常不会觉得自己很笨,但这一次让我觉得自己很笨。。。
const int arr_size = 19;
char row1[arr_size];
for (int i = 0; i < arr_size; ++i) {
row1[i] = rand() % 2 ? 'O' : 'X';
}