2차원 예제
1차원 배열을 사용해 바둑판 정보를 저장하고 알려주기
int main()
{
char data[12] = { 0,0,2,0,1,1,0,0,2,1,0,2 };
int x, y, i;
for (i = 0; i < 12; i++) //for문을 통해서 값을 12번 돌고
{
x = i % 4 + 1; // 열번호 구하기
y = i / 4 + 1; //행번호 구하기
printf("%d행 %d열에", y, x);
if (data[i] == 1) printf("검은돌이 있습니다.\n");
else if (data[i] == 2) printf("흰 돌이 놓여 있습니다.\n");
else printf("는 돌이 놓여 있지 않습니다.\n");
}
}
void main()
{
char data[3][4] = { {0,0,2,0}, {1, 1, 0, 0} ,{2, 1, 0, 2} };
int x, y;
for(y = 0; y<3; y++)
for (x = 0; x < 4; x++)
{
printf("%d행 %d열에", y + 1, x + 1);
if (data[y][x] == 1) printf("검은 돌이 놓여 있습니다.\n");
else if (data[y][x] == 2) printf("흰 돌이 놓여 있습니다.\n");
else printf("는 돌이 놓여있지 않습니다.\n");
}
}
3행 4열로 구성된 2차원 배열이다. x(4) ,y(3)값이 의미한다.
이중 for문을 통해서
y = 1일 때(행이 1일 때) // x는 0~4 반복
y = 2일 때(행이 2일 때) // 반복
마지막 printf("%d행 %d열에" , y+1, x+1) 하는 이유는 우리가 표현한 2차원 배열에선 요소의 색인이 하나 적기 때문에 하나를 더해 표현한다. 쉽게 생각하면 시작점이 0이기 떄문에 더해준다고 생각하면 좋다.
data[y][x] 가 == 1일 떄 ,
data[y][x] 가 == 2일 때, etc 나머지를 나눠서 경우를 나눈다.
문제
int main()
{
int Person[4][2];
int Dong, a, b;
for (a = 0; a < 4; a++) {
for (b = 0; b < 2; b++) {
printf("%d층 %d호 인구수. : ", a + 1, b + 1);
scanf_s("%d", &Person[a][b]);
}
}
for (a = 0; a < 4; a++)
{
Dong = 0;
Dong += Person[a][0];
Dong += Person[a][1];
printf("%d층의 인구수 : %d\n", a + 1, Dong);
}
}
문제
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
코드
void main()
{
int i, j;
int abb[3][9];
for (i = 0; i < 3; i++)
{
for (j = 0; j < 9; j++)
{
abb[i][j] = (i + 2) * (j + 1);
printf("%d\t", abb[i][j]);
}
printf("\n");
}
}
문제
1 2 3 4 >>>>>>>>>> 1 5
5 6 7 8 >>>>>>>>>> 2 6
/ / / / / >>>>>>>>>> 3 7
/ / / / / >>>>>>>>>> 4 8
위 그림의 형태대로 배열 A와 배열 B를 선언하자. 그리고 배열 A는 선언과 동시에 그림에서 명시하는 대로 초기화를 진행한다. 그리고 배열 B도 위 그림에서 보이는대로 초기화를 진행하되, 반드시 배열 A에 저장된 값을 이용해서 초기화를 진행한다.
void main()
{
int aaa[2][4] = { {1,2,3,4}, {5, 6, 7, 8} };
int abb[4][2];
int i, j;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 4; j++)
{
abb[j][i] = aaa[i][j];
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d\n", abb[i][j]);
}
printf("\n");
}
}