1 #define _CRT_SECURE_NO_WARNINGS
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 int n;
6 scanf("%d", &n);
7 int **matrix = malloc(sizeof(int *) * n);
8 for (int i = 0; i < n; i++)
9 {
10 matrix[i] = malloc(sizeof(int) * n);
11 memset(matrix[i], 0, sizeof(int) * n);
12 for(int j = 0; j < n; j++)
13 {
14 matrix[i][j] = 1;
15 printf("%d ", matrix[i][j]);
16 }
17 printf("\n");
18 }
19 for (int i = 0; i < n; i++)
20 {
21 free(matrix[i]);
22 }
23 free(matrix);
24 return 0;
25 }
일부로 행간 첫번째 번호를 붙였습니다.
위와 같이 컴파일/실행을 하게 되면 모두 1로만 출력이 되며,
14번째 행을 0으로 수정을 해주면 역시 모두 0으로만 출력이 되네요
11번째 행 memset이 잘못되었는지 나중에 이것저것 하다 보면 코드가 뒤죽박죽이 되기도 하네요...ㅠㅠ
답변 부탁 드릴께요...
다음 코드는 모든 좌표 (i, j)를 1로 설정합니다.
matrix[i][j] = 1;
문제는 대각선에 있는 행렬만 1로 바꿔야 합니다.
i == j일 때만 1로 바꿔야 합니다.
실행 결과는 심사문제가 원하는 형식대로 맞춰주면 됩니다.(공백, 줄바꿈 주의)