11. 1차원 배열

2. C/C++/01. C 2008. 12. 7. 17:45

11. 1차원 배열

I. 1차원 배열의 선언 및 초기화

1) 1차원 배열의 선언과 접근

  • 배열 선언에 필요한 것 세가지

    • int array[10];

      • 배열 길이 10 인 array라는 이름의 int형 배열 이라는 뜻
      • 배열길이, 배열이름, 배열 형태
      • 참고로 위에 배열은 메모리에 할당되는 크기는 int형(4바이트)*배열크기(10) = 40바이트이다.
  • 배열의 길이 선언은 오직 상수

    1. int main()
    2. {
    3. int size =10;
    4. int arr[size];
    5. }
    • 위와 같은 소스일 경우 arr의 사이즈가 size 변수로 해놓았기 때문에 컴파일시 오류가 납니다.
  • 배열 요소의 접근을 위한 인덱스의 이해

    • 배열의 첫번째 요소의 인덱스는 0이다. 즉, arr[0]이 처음이다.

2) 배열! 선언과 동시에 초기화하기기

  1. int arr1[5] = {1,2,3,4,5};
  2. int arr2[] = {1,2,3,4,5};
  3. int arr3[5] = {1,2};
  • 첫번째 줄의 arr1은 배열을 1,2,3,4,5로 초기화 시킨거고(단, 크기가 5라고 정해졌다.)
  • 두번째 줄의 arr2는 배열 크기는 없지만 초기화를 해줌으로써 크기가 정해진다.
  • 세번째 줄의 arr3는 배열 크기가 5이지만 초기화를 1,2만 해주면 나머지는 0으로 초기화 된다.

II. 배열을 이용한 문자열 변수의 표현

  1. 문자열 상수와 문자열 변수

    1. 문자열 상수

      1. 첫째로 이름이 없다.
      2. 문자열의 내용 변경이 불가능 하다.
    2. 문자열 변수

      1. 문자열을 변수로 선언하는데 있어서 사용 되는 것이 배열
  2. 문자열 변수의 특징과 널 문자에 대한 이해

    1. 배열을 이용한 문자열 변수의 생성

      1. 문자열 변수를 생성할 때는 배열의 크기는 하나 크기 잡아야 한다.
        이유 : 마지막에 이 문자열이 끝났다는 널문자를 넣어주어야 하기 때문에
    2. 널 문자에 대한 이해

      1. 만약 크기가 100인 char형 배열이 있는데 문자열을 저장할 때 너가 25자 정도만 되는 문장 또는 글자를 넣는다고 하자. 그리고 나서 출력 하면 어느정도는 잘나오지만 25자를 쓴 글자 뒤로 쓰레기 값이 엄청나게 나올 것이다.
      2. 그래서 25자를 쓴다음 끝에 \0 을 넣으면 \0(NULL)문자까지만 읽고 끝나 버린다.

III. 연습문제

11 -1

문제 1

소망 빌라는 5층으로 이뤄져 있다. 프로그램 실행 시 사용자로부터 1층부터시작해서 5층까지 각층에 사는 사람의 수를 입력받는다. 입력이 끝나면 소망빌라에 사는 전체 사람의 수를 계산해서 출력하는 프로그램을 작성하자.

문제 2

길이가 9인 int형 정수 배열을 선언하고 나서 사용자로부터 숫자를 하나 입력받는다. 그리고 입력 받은 숫자의 구구단 계산 결과를 미리 선언해 놓은 배열에 저장한다. 마지막으로 배열의 요소 중 에서 짝수 번째 위치에 존재하는 요소들을 출력하는 프로그램을 작성하자. 참고로 짝수번째 위치에 존재하는 배열의 요소를 출력하려면 홀수를 인덱스 값으로 사용해야 할 것이다.

문제 3

길이 26인 char형 배열을 선언해서 문자 'A'부터 'Z'까지 저장한다. 선언과 동시에 초기화하라는 뜻이 아니다. 반복문을 이용해서 저장하는 형태를 취해야 한다. 그리고 배열에 모든 요소를 처음부터 끝가지 출력하는 프로그램을 작성하자.

문제 해결에 들어가기에 앞서서 여러분에게 한가지 질문을 하겠다. 혹시 아스키 코드 표를 참조해야만 문제를 해결할 수 있다고 생각하는가? 그렇다면 아스키 코드값을 모르고도 해결할 수 있는 방법은 없겠는가?


11-2

문제 1

사용자로부터 하나의 문자열을 입력받아서 입력받은 문자열의 길이를 출력하는 프로그램을 작성하자. 널(NULL)문자는 문자열의 길이에서 제외시키는 것으로 하자.

문제 2

사용자가 입력한 문자열을 배열에 저장한 다음, 배열 내에게 문자열을 역순으로 뒤집는다. 그리고나서 제대로 뒤집어졌는지 확인하기 위해서 문자열을 출력해 보는 프로그램을 작성해 보자.

문제 3

문자열을 입력받는다. 입력받은 문자열을 구성하고 있는 문자 중에서 아스키 코드 값이 가장 큰 문자를 찾아서 출력하는 프로그램을 구현해 보자. 예를 들어서 입력된 문자열이 "abc"이라면 이중에서 아스키 코드값이 가장 큰 문자는 'c'이다. 따라서 c를 출력해준다.

참고문헌

 

이 글은 스프링노트에서 작성되었습니다.

'2. C/C++ > 01. C' 카테고리의 다른 글

17. 포인터의 포인터  (0) 2008.12.07
16. 다차원 배열  (0) 2008.12.07
14. 포인터와 함수에 대한 이해  (0) 2008.12.07
13. 포인터와 배열! 함께 이해하기  (0) 2008.12.07
12. 포인터의 이해  (0) 2008.12.07
Posted by kid1412
,