【发布时间】:2018-11-01 10:53:52
【问题描述】:
我有关于印刷板的任务,您应该在其中输入尺寸,程序将在每个单元格内创建一个带有 2 个数字的板:第一个数字是 1-3 的随机数字,第二个数字应该为零。我只能用零来制作它,但是当我尝试制作一个随机数时,一切都出错了.. 也许有人知道它有什么问题?
函数调用上传地图:
int randfunc(int i, int n);
int uploadmap(int m,int n){
int a[m][n];
int i,j,k;
// time_t t;
//srand((unsigned)time(&t));
//int randnum = rand() % 3 + 1;
for(i = 0; i < m;i++){
printf("+---");
}
printf("+\n");
memset(a,0,sizeof(a));
for(i = 0;i < m;i++){
for(j = 0; j < n;j++){
printf("|%d %d",randfunc(i,n),a[i][j]);
}
printf("|\n");
for(k = 0;k < m;k++){
printf("+---");
}
printf("+\n");
}
return 0;
}
调用1到3随机数的函数:
int randfunc(int i, int n) {
time_t t;
srand((unsigned) time(&t));
for( i = 0 ; i < n ; i++ ) {
printf("%d\n", rand() % 3 + 1);
}
return 0;
}
主要功能:
int main(int argc, const char * argv[]) {
int m,n;
printf("Enter dimension: \n");
scanf("%d %d",&m, &n);
printf("Map has been uploaded %d\n",uploadmap(m,n));
return 0;
}
【问题讨论】:
-
您应该只调用一次
srand,例如在main。您的randfunc没有返回任何有用的值。它应该做什么? -
将
i作为参数传递给randfunc是没有用的。你为什么这样做? -
当我尝试生成随机数时,一切都出错了 这有点不具体。我假设在涉及
randfunc()之后,您的漂亮板不再打印得很好了?请考虑您的randfunc()有副作用 - 它会自行打印:printf("%d\n", rand() % 3 + 1);。返回值而不是打印它不是更好吗? (循环有什么用?) -
好吧,我们的目标是写一个名为“嘿,那是我的鱼”的游戏。创建板子是这样解释的:“第1行(板子尺寸):m n行2到m+1:n个字段用单个空格分隔,每个字段由2位组成:第一个数字代表鱼的数量(0-3),第二个数字代表玩家的编号(1 到最多 9 名玩家,或 0 如果瓷砖未被占用)。数字 00 的组合表示没有浮冰的网格场。轮到玩家修改出发场和到达场.
-
用
printf("|%d 0",(rand()%3)+1);替换printf("|%d %d",randfunc(i,n),a[i][j]);