2012-07-15 5 views
-3
#include "stdio.h" 

void main(){ 
int a[2][2]={1, 2, 3, 4}; 
int a[2][2]={1, 2, 3, 4}; 
display(a, 2, 2); 
show(a, 2, 2);} 
} 

display(int *k, int r, int c){ 
int i, j, *z; 
for(i = 0; i < r; i++){ 
    z = k + i; 
    printf("Display\n"); 
     for(j = 0; j < c; j++){ 
      printf("%d", *(z + j)); 
     } 
    } 
} 

show(int *q, int ro, int co){ 
int i, j; 
    for(i = 0; i < ro; i++){ 
    printf("\n"); 
    for(j = 0; j < co; j++){ 
     printf("%d", *(q + i*co + j)); 
    } 
    } 
} 

출력 : show() 1234을 제공합니다 1223 동안인쇄 2D 어레이

Display 
12 
23 
Show 
12 
34 

Display() 표시되지? 둘 다 동일한 로직을 사용하여 2D 배열을 표시합니다. 아무도 도와 줄 수 있니?

+4

먼저 읽을 수있는 형식으로 우리의 코드를 넣어! – cybertextron

+1

코드를 들여 쓰는 법을 알아내는 데 필요한 약간의 시간을 투자하십시오. 아무도 그 혼란을 읽고 싶어하지 않는다. – meagar

+0

게으른 사람이라면, 파일을 복사하기 전에 적어도'indent -kr'을 실행하십시오. –

답변

0

display에는 행에 i, 열에 j의 두 개의 카운터가 사용됩니다. 배열은 메모리에 순차적으로 배열되어 있으므로 한 열에서 다음 행으로 이동할 때마다 열의 크기 (예 : c)만큼 i을 늘려야합니다. 따라서 k에 i*c을 추가해야하며 i이 아니어야합니다.

전체 기능 :

display(int *k,int r,int c){ 
int i,j,*z; 
for(i=0;i<r;i++){ 
    z=k+i*c; 
    printf("Display\n"); 
     for(j=0;j<c;j++){ 
      printf("%d",*(z+j)); 
     } 
    } 
} 
+0

대단히 감사합니다 ... :) –