又一次报错!!
#include
#include
using namespace std;
const char *a[11][11];
int main() {
int i{ 0 }, j{ 0 };
for (; i <= 10; i++) {
for (; j <= 10; j++) {
if (rand() % 10 > 2) {
a[i][j] = '0';
}
else {
a[i][j] = '?';
}
}
}
for (; i <= 10; i++) {
for (; j <= 10; j++) {
printf(a[i][j]);
}
}
}
代码如下:
#include<iostream>
#include<random>
using namespace std;
int main() {
char a[11][11];
int i, j;
for (i = 0; i <= 10; i++) {
for (j = 0; j <= 10; j++) {
if (rand() % 10 > 2) {
a[i][j] = '0';
}
else {
a[i][j] = '?';
}
}
}
for (i=0; i <= 10; i++) {
for (j=0; j <= 10; j++) {
printf("%c ", a[i][j]);
}
printf("\n");
}
}
const char *a[11][11];
应该是char a[11][11];啊,干嘛用指针。const又为啥要加呢?
在您的代码中,变量i和j都已经在上一个循环中被赋值为10,所以在后面的循环中i和j的值都是10。因此,您可能会看到错误消息“段错误”或“越界”。
为了解决这个问题,您可以在循环的末尾重置i和j的值。例如:
for (i = 0; i <= 10; i++) {
for (j = 0; j <= 10; j++) {
if (rand() % 10 > 2) {
a[i][j] = '0';
}
else {
a[i][j] = '?';
}
}
}
for (i = 0; i <= 10; i++) {
for (j = 0; j <= 10; j++) {
printf(a[i][j]);
}
}
希望这些建议能帮到您。
const char *a[11][11];
改为
char a[11][11];