-
C 언어로 n개의 데이터 평균을 구하려면 어떻게 해야 될까요?
지금까지의 접근 방법으로는 변수 n개를 선언하고 모두 더한 뒤 n으로 나누면 됩니다.
double data1 = 1;
double data2 = 2;
// (생략)
double data(n-1) = n-1;
dobule data(n) = n;
double sum = data1 + data2 +... + data(n);
double averge = sum / n;즉, 사용되는 변수가 많아질수록 일일이 타이핑하여 선언하기는 쉽지 않습니다.
배열을 이러한 연속적이고 반복되는 값을 손쉽게 처리할 수 있습니다.
- 자료형 배열 이름[크기];
- 자료형 배열 이름[크기]={값,.... , 값};
#include <stdio.h>
int main() {
int data [10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 배열을 생성하고 값 할당
printf("%d\n", numArr [0]); // 1: 배열의 첫 번째(인덱스 0) 요소 출력
printf("%d\n", numArr [5]); // 6: 배열의 여섯 번째(인덱스 5) 요소 출력
printf("%d\n", numArr [9]); // 10: 배열의 열 번째(인덱스 9) 요소 출력
return 0;
}int data [10]은 크기가 10인 int형 배열을 선언한다는 뜻입니다.
배열에 값이 저장된 공간을 요소(element)라고 합니다.
각 요소에 접근하려면 [ ] 안에 각 요소의 해당 인덱스를 지정하면 됩니다.
data [0]; // 첫 번째 요소
data [4]; // 다섯 번째 요소
data [8]; // 아홉 번째 요소
배열의 인덱스는 항상 0부터 시작합니다.
메모리 주소가 0부터 시작하기 때문입니다.배열을 선언할 때 크기 생략
int data1 [] = {1,2,3,4,5}; // 배열의 크기 생략
배열의 모든 요소를 0으로 초기화
int data1 [10] = {0,};
배열에 값 할당하기
data1 [0] = 1;
data2 [1] = 2;
data10 [9] = 10;배열 요소에 접근할 때 인덱스를 음수로 지정하거나, 크기를 벗어난 인덱스를 지정하면 실행 시 쓰레기 값이 출력됩니다.
즉, 배열의 범위를 벗어난 인덱스에 접근하면 배열이 아닌 다른 메모리 공간에 접근하게 됩니다.
// 반복문을 사용하여 배열의 요소를 모두 출력해보기.
#include <stdio.h>
#define N 10;
int main()
{
int data [N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 크기가 10인 int형 배열
for (int i = 0; i < N; i++) // 배열의 요소 개수만큼 반복
{
printf("% d\n", numArr [i]); // 배열의 인덱스에 반복문의 변수 i를 지정
}
return 0;
}
---------------------------------------------------------------------------------------------------------------------------
출력 값
1
2
3
4
5
6
7
8
9
10배열을 응용해서 10진수를 2진수로 변환한 뒤 배열에 넣어봅시다.
- 10진수를 0이 될 때까지 2로 계속 나누어준다.
- 나머지를 역순으로 읽는다.
// 10진수 -> 2진수 변환 후 출력
#include <stdio.h>
int main()
{
int decimal = 13;
int binary [20] = { 0, };
int position = 0;
while (1) {
binary [position] = decimal % 2; // 2로 나누었을 때 나머지를 배열에 저장
decimal = decimal / 2; // 2로 나눈 몫을 저장
position++; // 자릿수 변경
if (decimal == 0) // 몫이 0이 되면 반복을 끝냄
break;
}
// 배열의 요소를 역순으로 출력
for (int i = position - 1; i >= 0; i--)
{
printf("% d", binary [i]);
}
printf("\n");
return 0;
}
---------------------------------------------------------------------------------------------------------------------------
출력 값
1101
작성된 내용 중 잘못된 정보나 접근이 있을 시, www.instagram.com/hong_.98/을 통해 말씀해 주시기 바랍니다.
좋은 하루 보내세요.
'Language > C 튜터링' 카테고리의 다른 글
8. C - 튜터링 프로젝트 결과물 _Rev.F (0) 2021.05.26 7. C - 문자열_Rev.F (0) 2021.05.26 5. C - 함수_Rev.1 (0) 2021.05.06 4. C - 반복문, 조건문 활용 문제 (0) 2021.04.09 3. C - 조건문 & 반복문 (0) 2021.03.31 댓글