2015-09-27 92 views
1

所以基本上,當我打印我的陣列,它看起來像這樣:打印出特定格式的二維數組用C

 P00  P01  P02  
     P10  P11  P12  
     P20  P21  P22 

我希望它看起來像這樣:

   M[0][0] M[0][1] M[0][2] 
     M[0][0] P00  P01  P02  
     M[1][0] P10  P11  P12  
     M[2][0] P20  P21  P22  

我的代碼:

for (z=0; z<N; z++){ 

       for (c=0; c<N;c++){ 
       printf("\t%p", &M[z][c]); 
    } 
    printf("\n"); 
      } 

注意,地址Pxx是指針地址

+0

對於便攜式代碼,使用'printf(「\ t%p」,(void *)&M [z] [c ]);'如果'M [] []'沒有準備好''void *',則添加投射。 – chux

+0

但有一件事,這些不是矩陣的正確索引。 (0,0)!=(0,1)。當你給出的座標都與矩陣本身的一個位置相關時,你說每行/每列的所有內容都是矩陣點。您必須將每個點的位置基本上放在您的Pxx語句始終放置的位置。基本上。而不是在你的M [x] [x]中放置兩個點只需將其中一個作爲索引m [Var] –

回答

0

也許是這樣的:

for(i=0;i<N;i++){ 
     printf("\tM[0][%d]",i); 
    }   
    printf("\n"); 
for (z=0; z<N; z++){ 
    printf("M[%d][0]",z); 
    for (c=0; c<N;c++){ 

     printf(" %p\t", &M[z][c]); 
    } 
printf("\n"); 
} 
1

上述外環:

printf("\t\tM[0][0]\tM[0][1]\tM[0][2]\n"); 

然後略低於外環:

printf("M[%d][0]\t",i); 

是這樣的:

printf("\t\t"); 

for (z=0; z<N; z++) 
    printf("\tM[0][%d]",z); 

printf("\n"); 

for (z=0; z<N; z++){ 
    printf("M[%d][0]\t",z); 
    for(c=0; c<N; c++){ 
     printf("\t%p",&M[z][c]); 
    } 
    printf("\n"); 
}