在C

时间:2017-11-30 17:55:26

标签: c arrays for-loop multidimensional-array stdio

以下是我的职能:

void initialize(char box[NROW][NCOL]){
    int x,y;
    for(x=0; x<NROW; x++)
        for(y=0; y<NCOL; y++)
            if (x==0 || x==NROW-1 || y==0 || y==NCOL-1)
                box [x][y] = '=';
            else{
                 box[x][y]=' ';
            }

}

void display(char box[NROW][NCOL]){

    int x,y;
    for(x=0; x<NROW; x++){
    for(y=0; y<NCOL; y++){
       printf(" %c ", box[x][y]);
    }
        printf("\n");
    }
}    

void puzp1(char puz1[NROW][NCOL]){

    int x,y;

    for(x=1; x<NROW-1; x++){
    for(y=1; y<=x; y++){
        puz1[x][y]='*';
    }
    }

}

void puzp2(char puz2[NROW][NCOL]){

    int b,c;
    for(b=1; b<NROW; b++){
        for(c=1; c<NROW-b; c++){
            if(b!=3 && c!=3 ){
                puz2[b][c]='+';
                }
                }
            }
}

以下是我的主要内容:

int main(void){

    char ar1[NROW][NCOL];
    char ar2[NROW][NCOL];

    printf("Puzzle Piece 1:\n");
    initialize(ar1);
    puzp1(ar1);
    display(ar1);


    printf("Puzzle Piece 2:\n");
    initialize(ar2);
    puzp2(ar2);
    display(ar2);

我意识到有另一个线程有类似的问题,但它不能完全满足我的需要。这里发生的是initialize生成一个空心矩形,puzp1puzp2决定内容,display打印内容。

我可以并排打印这两个2D阵列;如果可能的话,怎么样?

NROW和NCOL是常数。

谢谢。

1 个答案:

答案 0 :(得分:1)

假设2D数组的大小相同,那么对于每一行,您只需要打印第一个框中的行,然后是一些分隔文本,然后是第二个框中的行。

void display2(char box1[NROW][NCOL], char box2[NROW][NCOL]){
    int x,y;

    for(x=0; x<NROW; x++){
        for(y=0; y<NCOL; y++){
           printf(" %c ", box1[x][y]);
        }
        printf("   ");
        for(y=0; y<NCOL; y++){
           printf(" %c ", box2[x][y]);
        }
        printf("\n");
    }
}