심사문제 38.7
, 장 유창님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d", &n);
int **a = malloc(sizeof(int *)*n);
for (int i = 0; i < n; i++)
{
a[i] = malloc(sizeof(int)*n);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i = j)
{
a[i][j] = 1;
}
if (i != j)
{
a[i][j] = 0;
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
for (int i = 0; i < n; i++)
{
free(a[i]);
}
free(a);
return 0;
}
저기 a[i][j]=1 여기 부분에서요 행과 열이같으면 1할당하고 아니면 0할당하려고하는데 이상한쓰레기값이나오네요.. 뭐가문제인가요...
1행1열=1 2행2열=2 이런식으로 되지않나여
Re: 심사문제 38.7
, 도장_ 관리자님이 작성if (i = j)
UNIT 17.1 설명을 보면
단, C 언어에서는 =을 할당으로 사용하고 있으므로 값을 비교할 때는 =를 두 개 붙여서 ==로 사용합니다. 초보들은 자주 틀리는 부분이니 if 안에서 ==를 사용했는지 반드시 확인하세요. 이 부분은 뒤에서 자세히 설명하겠습니다.
강조되어 있습니다.