배열은 같은 타입의 변수들로 이루어진 집합이다.
우리는 배열을 다음과 같이 두가지 요소로 표현 할수 있습니다.
1.
배열의 시작 주소
2.
배열의 값의 크기
배열의 초기화 그리고 각 인덱스에 접근해서 배열에 메모리위치에 변수를 사용 가능하다.
여기서 우리는 각 데이터의 시작 주소를 쉽게 계산할 수 있습니다.
값 | 시작 주소 | 인덱스 |
1 | 1000+4∗0 | 0 |
2 | 1000+4∗1 | 1 |
3 | 1000+4∗2 | 2 |
4 | 1000+4∗3 | 3 |
5 | 1000+4∗4 | 4 |
이를 바탕으로 우리는 왜 인덱스가 1이 아닌 0부터 시작하는지에 대한 이유를 알 수 있습니다.
배열의 시작주소에서 item size에 인덱스를 곱한 값을 더하면 바로 각 item의 시작 주소를 계산할 수 있기 때문이죠.
// 기본적인 형태
#include <iostream>
int main() {
int arr[5] = { 1,2,3,4,5 };
// 숫자형(int) 배열 arr(배열의 이름) 의 길이는 5([5])이고 값은 {1,2,3,4,5}
return 0;
}
C++
복사
#include <iostream>
int main() {
int arr[5] = { 1,2,3,4,5 };
int index = 0;
// 배열의 첫 번째 인덱스는 0이다.
// 왜? 배열의 시작주소에서 item size에 인덱스를 곱한 값을 더하면
// 바로 각 item의 시작 주소를 계산할 수 있다.
std::cout << arr[0]; // 1;
index = 5;
std::cin >> index;
std::cout << arr[index]; // 지정되지 않은 값이다
return 0;
}
C++
복사
배열은 반복문과 같이 쓰일때 무궁무진한 활용성을 보여줄수 있다.
#include <iostream>
int main() {
int arr[5] = { 1,2,3,4,5 };
for (int i = 0; i < i++)
{
std::cout << arr[i]; // i값을 인덱스로 활용
}
return 0;
}
C++
복사
연습문제
문제 1번
for문을 사용해서 숫자 5개를 입력 받으세요
다시 for문을 돌려 배열의 값을 출력하세요
ex)
입력 예시
3 5 2 6 7
출력 예시
3 5 2 6 7
문제 2번
위 배열을 하드코딩 해주세요.
숫자 하나를 입력 받고, 입력 받는 index에 해당하는 배열 값을 출력 하세요.
입력 예시
3
출력 예시
3번index의값은6입니다
문제 3번
for문을 돌려 숫자 7개를 배열에 입력 받아주세요.
배열 첫번째 칸에 있는 숫자와
배열 마지막 칸에 있는 숫자를 더해
출력 해 주세요
만약 4 5 7 8 9 10 11 을 입력했다면,
배열에 입력을 받고
4와 11을 더 한 값인 15를 출력하면 됩니다.
입력 예시
4 5 7 8 9 10 11
출력 예시
15
문제 4번
숫자 1개 입력 받고,
입력 받은 숫자에 +5를 한 후
이 값으로 배열에 채워주세요
그리고 다시 for문을 돌려 배열값을 출력 해주세요.
ex)
입력 : 3
출력 : 8 8 8 8 8
입력 예시
3
출력 예시
8 8 8 8 8
문제 5번
아래 arr배열을 하드코딩 해주세요.
숫자 2개를 a, b 변수에 입력 받고,
그리고 arr[a]와 arr[b]의 합을 출력 해주세요
입력 예시
2 4
출력 예시
8
문제 6번
위 배열을 하드코딩 하세요.
숫자 1개 입력 받고,
입력받은 숫자 index에 해당하는 값이
2보다 크면(>) "우와" , 아니면 "ㅠㅠ" 를 출력 해주세요.
입력 예시
1
출력 예시
ㅠㅠ
문제 7번
아래 숫자 5개를 배열에 하드코딩한 후, 숫자 1개(index)를 입력 받으세요
arr[index] 값에 100을 뺀 결과를 출력하세요
ex)
4를 입력했다면, 4번 index의 값에 100을 빼면 됩니다.
243 - 100 = 143
입력 예시
3
출력 예시
19
문제 8번
숫자 하나를 입력 받으세요
만약 그 숫자가 5보다 크면
•
-> for문을 돌려 1부터 10까지 출력 해 주세요.
그렇지 않으면
•
-> for문을 돌려 5부터 1까지 출력 해 주세요.
힌트 : if와 for문을 적절히 사용하시면 됩니다.
입력 예시
3
출력 예시
5
4
3
2
1
문제 9번
위와 같이 5칸짜리 배열에 값을 하드코딩으로 채운 후
배열 값을 거꾸로 출력 하세요.
출력 예시
7 4 3 2 5
문제 10번
배열을 6칸을 선언 해 주세요
숫자 1개를 입력 받으세요
그리고 그 숫자부터 1씩 작은 숫자를 각 배열칸에 채워 주세요
그리고 2번 index의 값을 출력 해 주세요 (힌트 : cout << arr[2]; )
예로들어서 8을 입력 받았다고 한다면
8 | 7 | 6 | 5 | 4 | 3 |
이렇게 채워주시고 2번 index의 값은 6이기 때문에
숫자 6을 출력 해 주시면 됩니다.
[힌트]
for (x=0; x<6; x++)
{
arr[x] = ........;
}
입력 예시
8
출력 예시
6
문제 11번
숫자 4개 4칸짜리 배열 입력 받고,
for문 돌려 sum을 구한 후, sum값을 출력 해주세요.
[힌트]
sum=sum+arr[x];
ex)
출력: 12
입력 예시
3 3 5 1
출력 예시
12
문제 12번
아래의 배열을 하드코딩해 주세요.
index값 하나를 입력받아 주세요.
입력된 index값 부터 배열 끝까지 출력 해 주세요.
ex)
3을 입력하셨다면
index 3번 부터 끝까지인
2
•
33
57
82
•
8
13
1
을 출력하시면 됩니다.
입력 예시
5
출력 예시
57
82
8
13
1
훈련문제
문제 1번
다음과 같은 배열을 하드코딩 해 주세요.
3 | 2 | 6 | 7 | 1 | 8 |
그리고 숫자 하나를 입력받고, 그 숫자 위치에 있는 값을 출력 해 주세요.
ex)
2를 입력 했다면, 2번 index에는 값이 6이 들어 있기 때문에
출력 결과는 6 입니다.
입력 예시
0
출력 예시
3
문제 2번
복잡한 조건이 아래와 같이 주어집니다. 잘 읽고 풀어주세요
숫자 1개를 입력 받으세요
만약 그 숫자가 3이 아니라면
"3이 아니다" 라고 출력 해 주세요
만약 그 숫자가 5가 아니라면
"5가 아니다" 라고 출력 해 주세요
만약 그 숫자가 1보다 크고 10보다 작은 숫자라면
for문을 돌려 5부터 1까지 출력 해 주세요.
입력 예시
4
출력 예시
3이 아니다
5가 아니다
5
4
3
2
1
문제 3번
5칸 짜리 배열을 선언하세요
그리고 숫자를 하나 입력 받고,
그 숫자로 배열을 꽉 채워주세요
그리고 다시 for문을 돌려 출력 해 주세요
입력 예시
3
출력 예시
33333
문제 4번
다섯칸 짜리 배열을 만들어주세요.
그리고 다음과 같이 하드코딩한 후
for문을 돌려 출력 해 주세요
(* 하드코딩 : cin로 입력받지 않고, 소스코드에 숫자를 적어두는 것을 뜻함)
1 | 7 | 3 | 2 | 6 |
출력 예시
17326
문제 5번
배열에 값 7개를 입력 받고 난 뒤
0번 index값 + 1번 index값 + 2번 index값 을 출력 해주세요.
ex)
3+5+4 = 12
출력: 12
입력 예시
3 5 4 2 1 1 2
출력 예시
12
문제 6번
아래의 배열을 하드코딩 해 주세요.
그리고 숫자 3개 입력받고 숫자 3개의 합을 구해주세요
sum이 10보다 크면 맨 마지막칸을 출력
그렇지 않다면 첫번째 칸을 출력해 주세요.
입력 예시
1 2 3
출력 예시
3
문제 7번
아래의 배열을 하드코딩해 주세요.
index값 하나를 입력받아 주세요.
입력된 index값 부터 배열 첫번째 까지 출력 해 주세요.
ex)
4를 입력 받으셨다면
4번 index부터 배열 첫번째 까지인
4
8
1
7
5
를 출력 해 주시면 됩니다.
입력 예시
5
출력 예시
73
4
8
1
7
5
문제 8번
숫자 1개를 입력 받으세요
그 숫자부터 1씩 증가되는 숫자를
6칸짜리 배열에 채워주세요
만약 3을 입력받았다면
이렇게 배열에 채우고 출력하시면 됩니다.
3 | 4 | 5 | 6 | 7 | 8 |
입력 예시
3
출력 예시
3
4
5
6
7
8
문제 9번
4칸짜리 배열을 만들고, 배열을 0으로 초기화 해주세요.
숫자 2개를 입력하고
입력한 숫자 2개를 0번 index와 2번 index에 넣어주세요.
ex)
입력 : 3 5
출력 : 3050
입력 예시
3 5
출력 예시
3050