c语言解决随机数问题:请高手帮忙看看错在哪?如何修改?谢啦!

2025-03-02 04:42:13
推荐回答(2个)
回答1:

首先,C语言的所有变量必须在程序的一开始就定义,也就是说,在for语句中是不能定义m和n的。
其次,不能重复定义变量,即使在C++中,int k这个语句也会报错,因为每执行一次for循环就会定义一次k。这是不允许的。
最后,p[N][N]=k,改为*p[m][n]=k。既然N做宏代换等于10,p[10][10]显然是错误且无意义的。若把p定义为数组,则p前不用加*,但此处p为指针,p[m][n]是个地址,而不是地址所对应的数据,k应该赋给指针所指的数据才对。
修改如下:
#include
#include
#include
#define N 10
main()
{
int m,n,k;
int (*p)[N][N];
p = malloc(N*N*sizeof(int));
srand(time(NULL));
for(m=0;m for(n=0;n {
k=rand()%3-1;
*p[m][n]=k;
}
}

回答2:

必须用指针?
不用的话这样就行了
#include
#include
#include
#define N 10
main() {
int m,n,k;
int p[N][N];
srand(time(NULL));
for(m=0;mfor(n=0;nk=rand()%3-1;
p[m][n]=k;
printf("%4d",p[m][n]);
}
}