2017-02-11 3 views
-1

2D 배열로 들어가기 시작했는데 왜 출력물이 차원 행렬이 아닌 데이터 행을 생성하는지 문제가 있습니다. 모든 도움을 주시면 감사하겠습니다! 고맙습니다!!2D 배열 입력 및 인쇄

내 코드 :

#include <stdio.h> 
#include <stdlib.h> 

int main() { 

int x, y, i, j; 
int m[10][10]; 


setvbuf(stdout, NULL, _IONBF, 0); 

while (1) { 
    printf("Number of rows? "); 
    scanf("%d", &x); 
    if (x == 0) 
     break; 
    printf("Number of columns? "); 
    scanf("%d", &y); 

    printf("Enter matrix values row by row: \n"); 
    for (i = 0; i < x; i++) { 
     for (j = 0; j < y; j++) { 
      scanf("%d", &(m[i][j])); 
     } 
    } 
printf("Matrix read:\n"); 
    for (i = 0; i < x; i++) { 
     for (j = 0; j < y; j++) { 
      printf("%d", m[i][j]); 
     } 
    } 

전가 데이터 :

Number of rows? 2 
Number of columns? 2 
Enter matrix values row by row: 
1 2 3 4 

출력 :

Matrix read: 
1234 

답변

1

가 인쇄 루프를 통해 이동, 왜 현재 프로그램이 선을 인쇄하는 알아낼 값을 인쇄하는 모든 지점을 살펴보십시오.

인쇄 "1"인쇄 "2"인쇄 "3"인쇄 "4"

귀하는이 같은 것 알 수 있습니다.

그래서, 프로그램에서 그렇게합니다. 다른 "서식 지정"없이 숫자를 인쇄합니다. 리터럴 "% d 개"의 숫자 뒤에 공백이있다

printf("Matrix read:\n"); 
for (i = 0; i < x; i++) { 
    for (j = 0; j < y; j++) { 
     printf("%d ", m[i][j]); 
    } 
    printf("\n"); 
} 

주의 사항 :

은 당신이 뭔가를 할 수 있습니다. 그런 다음, 내부가 모두 for loop (행에 해당) 이후에 새 줄이 인쇄됩니다.

참고 : 더 구체적인 이름을 사용하는 것이 좋습니다. 예 : 및 column 대신 이 y 대신 표시됩니다.

+0

정말 고마워요! 정말 도움이되었습니다. – cat

0

프로그램이 완벽합니다. 행렬을 올바른 순서로 인쇄하고 있습니다. 그러나 단지 출력을 행렬 형식으로 포맷하고 싶다면 내부 루프와 외부 루프 다음에 "\ t"와 "\ n"을 각각 인쇄하십시오.

for (i = 0; i < x; i++) { 
    for (j = 0; j < y; j++) { 
     printf("%d\t", m[i][j]); 
    } 
    printf("\n"); 
}