如何成对存储二维数组中的随机字母?

时间:2019-04-14 07:42:54

标签: c arrays

我正在使用 c 制作游戏,该游戏需要大小为 m * n 2D阵列,该游戏需要成对存储。这是一个记忆游戏,用户需要从隐藏的矩阵中选择2个插槽。如果它们都匹配,则将它们从矩阵中删除。

例如:对于数组a [3] [4],它应该存储

a t x e
b a t n 
x b n e

1 个答案:

答案 0 :(得分:1)

尽管我正在共享代码,但请尝试自己输入代码。我正在给出有关此答案的一些步骤,如果您想自己实现全部内容,则应该可以帮助您仔细考虑代码。

以下是一些步骤。

1)输入mn

int m, n;
scanf("%d%d", &m, &n);

2)将内存分配给阵列

char *arr[m];
for (i = 0; i < n; ++i) {
    arr[i] = malloc(n * sizeof(char));
}

3)现在,由于您在评论中提到了一个,因此程序应生成随机字母而不是数字,让我告诉您,C允许将数据类型从int转换为char。这是生成随机字符的方法。

for (i = 0; i < m; ++i) {
    for (j = 0; j < n; ++j) {
        c = (char) (rand() % 26) + 'a'; // Generate a random character between 'a' and 'z'
        arr[i][j] = c;
    }
}

这是完整的代码:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int m, n, i, j;
    char c;
    scanf("%d%d", &m, &n);

    char *arr[m];
    for (i = 0; i < n; ++i) {
        arr[i] = malloc(n * sizeof(char));
    }

    for (i = 0; i < m; ++i) {
        for (j = 0; j < n; ++j) {
            c = (char) (rand() % 26) + 'a'; // Generate a random character between 'a' and 'z'
            arr[i][j] = c;
            printf("%c ", c);
        }
        printf("\n");
    }
}

输入:

3
4

输出:

n w l r 
b b m q 
b h c d 

我认为这是预期的输出!

谢谢。