我在c中制作一个游戏,需要一个大小为m * n的2D数组,需要成对存储字母。这是一个记忆游戏,用户需要从矩阵中选择隐藏的2个插槽。如果它们都匹配,那么它们将从矩阵中删除。
例如:对于数组a [3] [4]它应该存储
a t x e
b a t n
x b n e
虽然我正在共享代码,但请尝试自己输入代码。我正在给出这个答案的一些步骤,如果你想自己实现它,这应该可以帮助你思考代码。
这是一些步骤。
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
我认为这是预期的产量!
谢谢。