배열
프로그램의 규모가 커지면 많은 변수가 필요하게 됩니다. 배열은 같은 자료형을 가지는 다수의 변수들을 하나의 이름으로 연속된 메모리 공간에 저장할 수 있는 자료구조입니다.
1차원 배열의 선언
자료형 배열명[크기];
int num[5];
변수를 선언하는 것과 같이 자료형을 먼저 쓰고 배열명과 크기를 선언해줍니다. 배열의 크기는 일반적으로 정수를 사용하지만 변수를 사용하여 나타내기도 합니다. 위의 예시는 num이라는 이름을 가진 5개의 정수형 메모리 공간을 만든 것입니다. 인덱스(Index)는 [ ]안에 있는 숫자를 말하는 것으로 배열의 각 요소(element) 중 몇 번째 요소인지 구분해주는 역할을 합니다. 인덱스는 0부터 시작한다는 점을 유의하세요.
num[0] | num[1] | num[2] | num[3] | num[4] |
4bytes | 4bytes | 4bytes | 4bytes | 4bytes |
num[0], num[1],...은 각각의 변수로 사용 가능합니다. 아래의 코드와 같이 num[0], num[1], num[2],..... 각각의 변수로 사용가능하며, 값을 대입할 수 있습니다. 인덱스는 0부터 시작한다는 점을 유의하셔야 합니다.
#include <stdio.h>
int 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]);
return 0;
}
출력결과
값의 입력과 출력은 for()문을 이용하여 효율적으로 표현이 가능합니다.
#include <stdio.h>
int main()
{
int i, num[5];
for(i=0;i<5;i++)
{
num[i]=i+1; //변수값 저장
}
for(i=0;i<5;i++)
{
printf("%d ", num[i]); //변수값 출력
}
return 0;
}
출력결과
1차원 배열의 초기화
자료형 배열명[크기] = {값1, 값2, 값3,.....} ;
int num[5] = {1, 2, 3, 4, 5};
num[0] | num[1] | num[2] | num[3] | num[4] |
1 | 2 | 3 | 4 | 5 |
배열을 선언할 때 각 요소(element)를 초기화 할 수 있습니다. 변수의 초기화와 같은 방법으로 대입 연산자(=)를 이용하며, 중괄호{ } 안에 콤마(,)로 여러 개의 값을 나열합니다. num은 정수 5개를 저장할 수 있는 배열이며, num[0], num[1], num[2], num[3], num[4]에 1, 2, 3, 4, 5가 입력되어 있습니다. 아래는 배열의 초기화를 이용하여 값을 저장하였습니다.
#include <stdio.h>
int main()
{
int i, num[5]={1, 2, 3, 4, 5};
for(i=0;i<5;i++)
{
printf("%d ", num[i]);
}
return 0;
}
출력결과
일반적으로 배열을 선언할 때에는 크기를 반드시 지정하여야 합니다. 다만, 배열의 초기화를 하는 경우는 생략할 수 있습니다.
#include <stdio.h>
int main()
{
int i, num[]={1, 2, 3, 4, 5};
for(i=0;i<5;i++)
{
printf("%d ", num[i]);
}
return 0;
}
출력결과
배열의 초기화 시, 모든 요소에 '0'을 초기화 하는 경우 {0, }으로 간략화 할 수 있습니다.
#include <stdio.h>
int main()
{
int i, num[5]={0,};
for(i=0;i<5;i++)
{
printf("%d ", num[i]);
}
return 0;
}
출력결과
배열의 초기화 시, 값을 입력하지 않는 요소에는 '0' 이 출력됩니다.
#include <stdio.h>
int main()
{
int i, num[5]={1, };
for(i=0;i<5;i++)
{
printf("%d ", num[i]);
}
return 0;
}
출력결과
쓰레기값(garbage)은 과거 해당 메모리 공간을 사용하면서 발생한 알 수 없는 값들을 말합니다. 선언한 배열의 공간을 초과하여 값을 출력하였습니다. 초기화값 이후에는 알 수 없는 값들이 출력된 것을 확인할 수 있습니다.
#include <stdio.h>
int main()
{
int i, num[5]={1, 2, 3, 4, 5};
for(i=0;i<10;i++)
{
printf("%d ", num[i]);
}
return 0;
}
출력결과
1차원 배열의 예제
(1단계) 예제 : 배열을 이용하여 정수 5개를 입력받고 출력하기
출력결과
코드
#include <stdio.h>
int main()
{
int i, num[5];
for(i=0;i<5;i++)
{
printf("정수를 입력하세요:");
scanf("%d", &num[i]);
}
for(i=0;i<5;i++)
{
printf("num[%d]=%d\n", i, num[i]);
}
return 0;
}
(2단계) 예제1 : 5개의 정수를 입력받아 입력받은 역순으로 출력하기
출력결과
코드
#include <stdio.h>
int main()
{
int i, num[5];
for(i=0;i<5;i++)
{
printf("정수를 입력하세요:");
scanf("%d", &num[i]);
}
printf("\n");
for(i=4;i>=0;i--)
{
printf("%d ", num[i]);
}
return 0;
}
(2단계) 예제2 : 5과목의 점수를 입력받아 총점과 평균값을 출력하시오.
출력결과
코드
#include <stdio.h>
int main()
{
int i;
float score[5], sum=0, avg;
for(i=0;i<5;i++)
{
printf("점수%d:", i+1);
scanf("%f", &score[i]);
sum+=score[i];
}
avg=sum/5;
printf("\n총점:%.2f점, 평균:%.2f점", sum, avg);
return 0;
}
'C 언어 프로그래밍 > 배열' 카테고리의 다른 글
2차원 배열 (3) | 2020.06.07 |
---|---|
배열과 문자열 (2) | 2020.06.07 |
댓글