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

问题描述 投票:-3回答:1

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

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

a t x e
b a t n 
x b n e
c arrays
1个回答
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允许从intchar转换数据类型。以下是生成随机字符的方法。

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 

我认为这是预期的产量!

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.