본문 바로가기
-----ETC-----/C++ 마스터 시리즈

[C++ 마스터] Day 8: 배열과 문자열

by cogito21_cpp 2024. 8. 1.
반응형

배열 (Arrays)

배열은 동일한 데이터 타입의 집합을 저장할 수 있는 연속된 메모리 블록입니다. 배열의 각 요소는 인덱스를 사용하여 접근할 수 있습니다.

 

1. 배열 선언과 초기화

배열을 선언하고 초기화하는 방법은 다음과 같습니다:

int numbers[5]; // 5개의 정수형 요소를 가지는 배열 선언
int numbers[5] = {1, 2, 3, 4, 5}; // 배열 초기화

 

2. 배열 요소 접근

배열의 각 요소는 인덱스를 사용하여 접근할 수 있습니다. 배열의 인덱스는 0부터 시작합니다.

cout << numbers[0] << endl; // 첫 번째 요소 출력
numbers[2] = 10; // 세 번째 요소에 값 할당

 

3. 배열의 크기

배열의 크기는 sizeof 연산자를 사용하여 구할 수 있습니다.

int size = sizeof(numbers) / sizeof(numbers[0]);
cout << "Array size: " << size << endl;

 

4. 다차원 배열

다차원 배열은 배열의 배열입니다. 예를 들어, 2차원 배열은 다음과 같이 선언할 수 있습니다:

int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
cout << matrix[1][2] << endl; // 5 출력

 

문자열 (Strings)

문자열은 문자들의 연속입니다. C++에서 문자열을 처리하는 방법은 두 가지가 있습니다: C 스타일 문자열과 C++ 스타일 문자열입니다.

 

1. C 스타일 문자열

C 스타일 문자열은 문자 배열로 저장됩니다. 문자열의 끝은 null 문자('\0')로 표시됩니다.

char str[6] = "Hello";
cout << str << endl;

 

2. C++ 스타일 문자열

C++ 스타일 문자열은 표준 라이브러리의 string 클래스를 사용합니다. 더 많은 기능을 제공하며 사용하기 편리합니다.

#include <string>

using namespace std;

string str = "Hello, World!";
cout << str << endl;

 

3. 문자열 함수

문자열 클래스는 다양한 멤버 함수를 제공합니다:

  • length(): 문자열의 길이를 반환
  • append(): 문자열을 추가
  • substr(): 부분 문자열 반환
  • find(): 문자열에서 특정 문자열을 찾음

예제:

string str = "Hello";
cout << "Length: " << str.length() << endl;
str.append(", World!");
cout << str << endl;
cout << "Substring: " << str.substr(0, 5) << endl;
cout << "Position of 'World': " << str.find("World") << endl;

 

예제 문제

문제 1: 배열의 요소 합을 계산하는 프로그램 작성

사용자로부터 5개의 정수를 입력받아 배열에 저장하고, 배열의 요소 합을 계산하여 출력하는 프로그램을 작성하세요.

 

해설:

#include <iostream>

using namespace std;

int main() {
    int numbers[5];
    int sum = 0;

    cout << "Enter 5 numbers: ";
    for (int i = 0; i < 5; i++) {
        cin >> numbers[i];
        sum += numbers[i];
    }

    cout << "Sum: " << sum << endl;

    return 0;
}

 

이 프로그램은 사용자로부터 5개의 정수를 입력받아 배열에 저장하고, 배열의 요소 합을 계산하여 출력합니다.

 

문제 2: 2차원 배열의 요소를 출력하는 프로그램 작성

3x3 크기의 2차원 배열을 선언하고 초기화한 후, 배열의 모든 요소를 출력하는 프로그램을 작성하세요.

 

해설:

#include <iostream>

using namespace std;

int main() {
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

 

이 프로그램은 3x3 크기의 2차원 배열을 선언하고 초기화한 후, 배열의 모든 요소를 출력합니다.

 

문제 3: 문자열을 뒤집는 프로그램 작성

사용자로부터 문자열을 입력받아, 그 문자열을 뒤집어 출력하는 프로그램을 작성하세요.

 

해설:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str;
    cout << "Enter a string: ";
    cin >> str;

    int n = str.length();
    for (int i = 0; i < n / 2; i++) {
        swap(str[i], str[n - i - 1]);
    }

    cout << "Reversed string: " << str << endl;

    return 0;
}

 

이 프로그램은 사용자로부터 문자열을 입력받아, 그 문자열을 뒤집어 출력합니다.

 

다음 단계

8일차의 목표는 C++의 배열과 문자열에 대해 학습하는 것이었습니다. 다음 날부터는 포인터와 참조자에 대해 다룰 것입니다.

 

내일은 "포인터와 참조자"에 대해 다룰 예정입니다. 질문이나 피드백이 있으면 댓글로 남겨 주세요!

반응형