728x90
반응형
1. 답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number;
scanf("%d", &number);
int **m = malloc(sizeof(int*) * number);
for (int i = 0; i < number; i++)
{
m[i] = malloc(sizeof(int) * number);
}
for (int i = 0; i < number; i++)
{
for (int j = 0; j < number; j++)
{
if (i == j)
m[i][j] = 1;
else
m[i][j] = 0;
printf("%d ", m[i][j]);
}
printf("\n");
}
for (int i = 0; i < 3; i++)
{
free(m[i]);
}
free(m);
return 0;
}
2. 결과
3. 정리
다른 방식으로 작성해 본다면, 아래와 같이 짜도 괜찮습니다. 큰 차이는 없지만 memset함수를 이용해서 0으로 모두 초기화를 시키는 방식이 조금 다릅니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int number;
scanf("%d", &number);
int** m = malloc(sizeof(int*) * number);
for (int i = 0; i < number; i++)
{
m[i] = malloc(sizeof(int) * number);
memset(m[i], 0, sizeof(int) * number);
}
for (int i = 0; i < number; i++)
{
for (int j = 0; j < number; j++)
{
if (i == j)
m[i][j] = 1;
printf("%d ", m[i][j]);
}
printf("\n");
}
for (int i = 0; i < 3; i++)
{
free(m[i]);
}
free(m);
return 0;
}
4. 비고
- 코딩 도장 심사 문제는 아래 링크 바로가기를 눌러주세요. 간단한 가입 진행 후 이용 가능하므로 참고 부탁드립니다.
- 코딩 도장 문제 링크 바로가기 : 38.7 심사문제: 단위행렬 만들기 (dojang.io)
코딩 도장: 사이트에 로그인
사이트의 강좌를 수강하고 학습 효과를 최대한 높이려면 회원 가입이 필요합니다. '회원 가입' 버튼을 클릭한 후 가입 정보를 입력합니다.입력한 이메일 주소로 확인 메일이 즉시 전송됩니다.이
dojang.io
728x90
반응형
댓글