新程序员需要建议。我使用2d阵列创建了一个5乘5的电路板。但是我想用4个可能的字母x,y,z填充数组表。
createBoard()
{
char myArray[5][5];
int i,j;
for(i=0; i < ROW; i++){
for(j=0; j < COL; j++){
if(myArray[0][1]){
myArray[i][j] = '0';
printf("%c ", myArray[i][j]);
}
}
printf("\n");
}
printf("%d\n", myArray[i][i]);
getchar;
return 0;
}
int main(int argc, char *argv[]){
createBoard();
}
截至目前,所有这一切都是用0和5填充5乘5。我想让它混合使用x,y和z。我会更好地自己填充每个阵列
char myArray[5][5] =
{
{z,y,z,x,y},
{y,y,x,x,z},
}
等等?或者有更好的方法考虑以后我需要创建函数来接受用户输入并操纵x,y和z字符的位置。
为任何指导干杯
答案 0 :(得分:2)
使用rand
函数随机填充数字x
,y
和z
。试试这个:
void createBoard() // Place void as a return type as you are returning nothing from it.
{
char myArray[5][5];
char letter[3] = {'x', 'y', 'z'};
int i,j;
for(i=0; i < ROW; i++){
for(j=0; j < COL; j++){
myArray[i][j] = letter[rand()%3]; //rand()%3 will generate number from 0 to 2 randomly.
}
}
for(i=0; i < ROW; i++){
for(j=0; j < COL; j++){
printf("%c ", myArray[i][j]);
}
printf("\n");
}
//Remove return 0 and getchar. No need of them.
}
将srand(time(NULL));
放入main
种子rand
函数,以便在createBoard
的每次调用中获得不同的结果。
答案 1 :(得分:0)
包含time
标题,以便您可以使用随机数:
#include <time.h>
您需要在srand
之前致电rand
:
srand(time(NULL));
将您可能的值放入数组中:
char values[] = { '0', 'x', 'y', 'z' };
您可以使用values[rand()%4]
获得随机可能的值:
myArray[i][j] = values[rand()%4];
rand()%4
将给出0和3之间的值,即可能的值索引。
答案 2 :(得分:0)
如果您希望createBoard始终设置相同的初始板,那么使用数组初始化器进行它是有意义的:
char myarray[5][5] = {
{ 'x', 'y', 'z', 'x', 'y' },
{ 'z', 'x', 'y', 'z', 'x' },
{ 'y', 'z', 'x', 'y', 'z' },
{ 'x', 'y', 'z', 'x', 'y' },
{ 'z', 'x', 'y', 'z', 'x' }
}
但是,只有当数组是全局变量或者您不想从函数返回它时。 (如果你不想退回董事会,那么这个职能的重点是什么?)
如果您打算最终从函数返回板,无论是作为返回值还是通过指针参数,那么您的函数必须通过malloc()系列函数动态创建值。 E.g。
char myarray[5][5];
myarray = (char[5][5]) malloc(25 * sizeof(char));
/* now initialize */
...
/* later: */
return myarray;
在这种情况下,您没有使用数组初始化程序的替代方法(至少在标准C中)。您必须通过其他方式初始化,例如通过复制兼容阵列的值或逐个设置元素。