代码之家  ›  专栏  ›  技术社区  ›  Raph

在C中并排打印2D阵列

  •  0
  • Raph  · 技术社区  · 7 年前

    以下是我的功能:

    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 生成空心矩形, puzp1 puzp2 决定内容和 display 打印内容。

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

    NROW和NCOL是常数。

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ian Abbott    7 年前

    假设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");
        }
    }