使用C中的if语句填充2D数组

时间:2014-07-11 14:09:28

标签: c arrays if-statement conditional-statements multidimensional-array

新程序员需要建议。我使用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字符的位置。

为任何指导干杯

3 个答案:

答案 0 :(得分:2)

使用rand函数随机填充数字xyz。试试这个:

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中)。您必须通过其他方式初始化,例如通过复制兼容阵列的值或逐个设置元素。