C 프로그래밍에서 배열은 여러 개의 데이터를 하나의 이름으로 효율적으로 관리할 수 있게 해주는 핵심 자료구조입니다. 이 글에서는 1차원 배열과 2차원 배열에 값을 저장하고(입력) 저장된 값을 꺼내는(출력) 방법을 예제 코드와 함께 단계별로 살펴보겠습니다.
1차원(1D) 배열 처리
값 저장하기 (입력)
1차원 배열에 값을 저장하려면 반복문(for)을 사용하여 각 인덱스에 순서대로 값을 입력합니다.
int num[5];
int i;
for(i = 0; i < 5; i++){
scanf("%d", &num[i]);
}저장된 값 가져오기 (출력)
배열에 저장된 값을 읽어올 때도 마찬가지로 반복문을 활용하여 인덱스를 순회하며 출력합니다.
int num[5];
int i;
for(i = 0; i < 5; i++){
printf("%d", num[i]);
}예제 프로그램 1: 배열 요소를 역순으로 출력하기
다음은 사용자로부터 배열 요소를 입력받은 뒤, 역순으로 출력하는 C 프로그램입니다.
#include<stdio.h>
void main(){
// 배열 선언 (런타임 시 입력)
int array[5], i;
// 배열에 요소 입력받기
printf("Enter elements into the array: \n");
for(i = 0; i < 5; i++){
printf("array[%d] :", i);
scanf("%d", &array[i]);
}
// 배열 요소를 역순으로 출력
printf("The elements from the array displayed in the reverse order are : \n");
for(i = 4; i >= 0; i--){
printf("array[%d] :", i);
printf("%d\n", array[i]);
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter elements into the array: array[0] :1 array[1] :2 array[2] :3 array[3] :4 array[4] :5 The elements from the array displayed in the reverse order are: array[4] :5 array[3] :4 array[2] :3 array[1] :2 array[0] :1
2차원(2D) 배열 처리
값 저장하기 (입력)
2차원 배열은 행(row)과 열(column)로 구성되므로, 중첩 반복문을 사용하여 값을 저장합니다.
int a[4][3];
int i, j;
for(i = 0; i < 4; i++){
for(j = 0; j < 3; j++){
scanf("%d", &a[i][j]);
}
}저장된 값 가져오기 (출력)
2차원 배열의 값을 출력할 때도 동일하게 이중 for문을 사용하여 모든 요소를 순회합니다.
int a[4][3];
int i, j;
for(i = 0; i < 4; i++){
for(j = 0; j < 3; j++){
printf("%d", a[i][j]);
}
}예제 프로그램 2: 두 배열의 합과 곱 계산하기
다음은 런타임에 값을 입력받아 두 개의 2차원 배열 A와 B의 요소별 합(sum)과 곱(product)을 계산하여 출력하는 C 프로그램입니다.
#include<stdio.h>
void main(){
// 배열 선언 (런타임 시 입력)
int A[2][3], B[2][3], i, j;
int sum[2][3], product[2][3];
// for문을 이용해 배열 A에 요소 입력
printf("Enter elements into the array A: \n");
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
printf("A[%d][%d] :", i, j);
scanf("%d", &A[i][j]);
}
printf("\n");
}
// for문을 이용해 배열 B에 요소 입력
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
printf("B[%d][%d] :", i, j);
scanf("%d", &B[i][j]);
}
printf("\n");
}
// 합 계산 후 출력
printf("Sum array is : \n");
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
sum[i][j] = A[i][j] + B[i][j];
printf("%d\t", sum[i][j]);
}
printf("\n");
}
// 곱 계산 후 출력
printf("Product array is : \n");
for(i = 0; i < 2; i++){
for(j = 0; j < 3; j++){
product[i][j] = A[i][j] * B[i][j];
printf("%d\t", product[i][j]);
}
printf("\n");
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter elements into the array A: A[0][0] :2 A[0][1] :3 A[0][2] :4 A[1][0] :1 A[1][1] :2 A[1][2] :3 B[0][0] :4 B[0][1] :5 B[0][2] :3 B[1][0] :2 B[1][1] :1 B[1][2] :2 Sum array is: 6 8 7 3 3 5 Product array is: 8 15 12 2 2 6
정리
1차원 배열은 하나의 for문으로, 2차원 배열은 행과 열을 처리하기 위한 이중 for문으로 입출력을 처리한다는 점이 핵심입니다. 배열의 크기를 벗어나지 않도록 인덱스 범위(0부터 크기-1까지)를 항상 주의 깊게 확인하는 습관을 들이면 안전한 코드를 작성할 수 있습니다.