【问题标题】:How to create map with random numbers inside in c如何在c中创建带有随机数的地图
【发布时间】: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]);

标签: c loops random


【解决方案1】:

以下简单的code 可以工作:

#include <stdio.h>
#include <stdlib.h>

void uploadmap(int m,int n) {
    for (int i = 0;i < m; ++i) {
        for(int j = 0; j < n; ++j)
            printf("|%d 0", (rand() % 3)+1);
        printf("|\n");
    }
}

int main() {
    int m, n;
    printf("Enter dimension: \n");
    scanf("%d %d",&m, &n);
    uploadmap(m,n);

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2018-04-06
    • 2011-02-18
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多