我正在使用 c 制作游戏,该游戏需要大小为 m * n 的 2D阵列,该游戏需要成对存储。这是一个记忆游戏,用户需要从隐藏的矩阵中选择2个插槽。如果它们都匹配,则将它们从矩阵中删除。
例如:对于数组a [3] [4],它应该存储
a t x e
b a t n
x b n e
答案 0 :(得分:1)
尽管我正在共享代码,但请尝试自己输入代码。我正在给出有关此答案的一些步骤,如果您想自己实现全部内容,则应该可以帮助您仔细考虑代码。
以下是一些步骤。
1)输入m
和n
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
我认为这是预期的输出!
谢谢。