C언어/참고서: C언어 콘서트

C언어 29차시 배열 array, 배열 요소, 인덱스, n차원 배열, 문자열

Olivia-BlackCherry 2023. 3. 28. 15:43

목차

    1. 배열이란? array

    많은 변수를 빈틈없이 일직선 상에 나열한 구조이다.

    다시 말해 여러 값을 한꺼번에 저장할 수 있는 데이터저장 장소이다. 

    배열을 이용하면 보다 손쉽게 대량의 데이터를 저장할 수 있는 공간을 만들고, 데이터들을 손쉽게 처리할 수 있다. 

    출처: C언어 콘서트

     

     

    2. 선언

    자료형 배열명   배열크기 ;
    int       scores        [10]  ;

    1) 자료형 지정

    - 원칙: 한 배열 안의 각각의 데이터는 같은 종류(자료형)여야 한다.

    - 배열은 데이터 타입이 동일한 변수를 늘어 놓은 것이므로, 배열 자체에도 데이터 타입이 있다.

     

    2) 배열명

    배열의 이름을 적는다. 배열명이라고도 한다. 다른 변수 및 배열과 구분되도록 고유의 이름을 붙인다. 

    배열의 이름을 만들 때도 규칙이 있다. 배열명은 고유해야 하며, 숫자로 시작할 수 없다. 

    배열의 이름을 지을 때는, 배열 안의 내용을 대표할 수 있는 것이 좋다.

     

    3) 배열크기

    가. 배열 요소 array element

    - 배열에서 데이터 각각을 배열요소라고 부른다. 

    - 배열에 존재하는 데이터의 수가 배열요소 수이다.

    나. 인덱스 index

    - 배열 안의 데이터들은 번호에 의하여 식별되며, 이 번호가 인덱스이다. 

    - 배열명[인덱스]로 해당 배열요소에 접근한다.

    다. 정수 상수 사용

    -배열의 크기를 나타낼 때는 항상 정수 상수를 사용한다.

    라.  #define 변수  크기

    보통 배열을 선언할 때는 배열의 크기를 #define 지시자로 만들어진 기호 상수를 사용한다.

    C언어 콘서트

    배열명  [인덱스] 
    scores  [0]

     

     

    3. n차원 배열

    지금까지 보았던, 일직선에서 나열한 사물함의 모습을 한 배열을 1차원 배열이라고 한다. 

    데이터를 가로세로 빈틈없이 꽉 찬 직사각형 모습으로 나열한 배열은 2차원 배열이다.

    높이를 추가하여 직육면체 모습을 한 배열은 3차원 배열이다.

    그 외에도 n차원 배열이 이다.

     

    배열의 각 요소는 인덱스 번호로 나타낸다.

    배열명[행 요소 번호][열 요소 번호]
    ex) array[3][2]

     

     

    4. 문자열

    문자열은 각 요소에 문자가 저장된 문자 배열이다. 

     

     

    5. 연습문제 

    5-1 배열 요소 출력하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #define SIZE 6
    
    int main(void)
    {
    	int i;
    	int scores[SIZE];
    	scores[0] = 20;
    	scores[1] = 30;
    	scores[2] = 50;
    	scores[3] = 70;
    	scores[4] = 90;
    	scores[5] = 20;
    
    	for (i = 0; i < SIZE; i++)
    		printf("scores[%d]=%d\n", i, scores[i]);
    	return 0;
    }

     

     

    5-2 a~z까지의 문자 저장하고 있는 배열 생성하고, 데이터 꺼내기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #define SIZE 26
    
    int main(void)
    {
    	int i;
    	char codes[SIZE];
    
    	for (i = 0; i < SIZE; i++)
    		codes[i] = 'a' + i;
    
    	for(i = 0; i < SIZE; i++)
    		printf("codes[%d]=%c\n", i, codes[i]);
    
    	return 0;
    }

    >> a 다음의 수는 b이기 때문에 'a' +1='b'이다.

     

     

    5-3 성적 입력받아서 합계와 평균 구하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #define SIZE 5
    
    int main(void)
    {
    	int i, score, sum;
    	int scores[SIZE];
    	double average;
    	sum =average= 0;
    
    	for (i = 0; i < SIZE; i++) {
    		printf("성적을 입력하세요\n");
    		scanf("%d", &score);
    		scores[i] = score;
    	}
    		
    	for (i = 0; i < SIZE; i++) {
    		sum = sum + scores[i];
    		average = sum / SIZE;
    	}
    	printf("%d, %lf\n", sum, average);
    
    	return 0;
    }