打印出特定格式的二维数组用C

问题描述:

所以基本上,当我打印我的阵列,它看起来像这样:打印出特定格式的二维数组用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] –

也许是这样的:

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

上述外环:

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