C언어 배열의 출력은 배열 원소의 입력을 통해 가능합니다. 배열 원소의 정수값에 변수를 대입 후 반복문을 통해 대량 출력도 할 수 있습니다. 배열을 역순으로 출력은 초깃값에 -1을 추가합니다.
C언어 배열 출력
배열 개수가 적을 때 배열값 출력은 printf()
함수에 배열 원소를 직접 삽입하면 됩니다.
#include<stdio.h>
void main() {
int num[5];
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 4;
num[4] = 5;
printf("%d %d %d %d %d", num[0], num[1], num[2], num[3], num[4]);
}
결과
1 2 3 4 5
배열 출력 반복문 이용
배열 개수가 많은 경우 반복문을 이용하면 작성시간을 줄일 수 있습니다.
#include<stdio.h>
void main() {
int num[5];
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 4;
num[4] = 5;
int x; // 배열[n] 원소에 대입할 변수
for (x = 0; x <= 4; x++)
{
printf("%d ", num[x]);
}
}
결과
1 2 3 4 5
배열 개수 구하면서 출력
배열의 사이즈를 입력하지 않았을 경우 개수를 구하는 수식을 대입하면 됩니다.
#include<stdio.h>
void main() {
int num[] = { 1, 2, 3, 4, 5 };
int x;
for (x = 0; x <= sizeof(num)/sizeof(int); x++) //오류가 발생합니다. 왜 그럴까요?
{
printf("%d ", num[x]);
}
}
결과
하지만 오류가 발생합니다. 왜 그럴까요?
1 2 3 4 5 -858993460
왜냐하면 배열의 개수는 배열 원소[정수]
보다 1
이 크기 때문입니다. 현재 수식은 x <= 5
로 되었습니다. 따라서 등호를 제외해야 x < 5
로 x <= 4
와 수식이 동일해집니다.
#include<stdio.h>
void main() {
int num[] = { 1, 2, 3, 4, 5 };
int x;
for (x = 0; x < sizeof(num)/sizeof(int); x++) //등호를 제외해야 합니다.
{
printf("%d ", num[x]);
}
}
결과
1 2 3 4 5
배열 내림차순 출력
배열값을 뒤에서부터 출력하고 싶은 경우 반복문의 초깃값을 배열 크기로 지정하고, 대신 반복문의 종료를 배열 원소[0]
에 맞추고, 감소 연산자를 사용하면 됩니다.
#include<stdio.h>
void main() {
int num[] = { 1, 2, 3, 4, 5 };
int x;
for (x = sizeof(num)/sizeof(int); x >= 0; x--) //오류가 발생합니다. 왜 그럴까요?
{
printf("%d ", num[x]);
}
}
결과
오류가 발생하는 이유는 초깃값이 배열의 개수인데 배열의 원소 번호는 배열 개수 - 1
이기 때문입니다.
-858993460 5 4 3 2 1
현재 수치는 초깃값이 num[5]
가 됩니다. 따라서 사이즈를 측정할 때 -1
을 해줘야 초깃값이 num[4]
가 됩니다.
#include<stdio.h>
void main() {
int num[] = { 1, 2, 3, 4, 5 };
int x;
for (x = sizeof(num)/sizeof(int) - 1; x >= 0; x--) //사이즈 측정시 -1을 삽입해줘야 합니다.
{
printf("%d ", num[x]);
}
}
결과
5 4 3 2 1
배열의 데이터 개수와 배열 원소 번호가 일치하지 않는 다는 점이 배열 내림차순 정렬의 핵심입니다.