C++/Chapter01. 기초사항 정리

lullaby ·2025년 10월 1일

C++

목록 보기
1/4
post-thumbnail

📚 1. C++ 언어의 역사와 특징

핵심 개념

  • 개발자: Bjarne Stroustrup (비야네 스트로스트룹, 덴마크)
  • 개발 시기: 1980년대 초, AT&T 벨연구소
  • 발전 과정: C with Classes → C++
  • 표준화: ANSI와 ISO에 의해 공동 개발 (1997년 공식 표준)

C++의 주요 특징

  1. 클래스(class): 객체의 속성과 동작 정의
  2. 상속(inheritance): 코드 재사용
  3. 연산자 중복(operator overloading): 동일 연산자로 새로운 연산 정의
  4. 함수 중복(function overloading): 매개변수가 다른 동일명 함수
  5. new와 delete: 동적 메모리 할당/해제
  6. 제네릭(generics): 자료형에 상관없이 재사용

설계 철학

  • 엄격한 타입 검사, 효율적
  • 범용 언어, 이식성
  • 다양한 프로그래밍 스타일 지원 (절차지향, 객체지향, 일반화)
  • C와의 최대 호환성

💻 2. 기본 프로그램 구조

표준 프로그램 템플릿

#include <iostream>
using namespace std;

int main()
{
    // 프로그램 내용
    return 0;
}

핵심 구성 요소

  • #include <iostream>: 입출력 스트림 헤더 포함
  • using namespace std;: std 네임스페이스 사용 선언
  • int main(): 프로그램의 시작점
  • return 0;: 정상 종료 신호

주석(Comment)

// 한 줄 주석
/*
   여러 줄 주석
   블록 주석
*/
  • 단축키: Ctrl+K, Ctrl+C (주석), Ctrl+K, Ctrl+U (주석 해제)

🔢 3. 변수와 자료형/이건알아

기본 자료형

정수형

int age = 25;           // 4바이트
short height = 170;     // 2바이트
long population = 50000000L; // 4바이트 이상

실수형

float pi = 3.14f;       // 4바이트
double precision = 3.141592653; // 8바이트

논리형

bool isStudent = true;  // 1바이트
bool isWorking = false;

문자형

char grade = 'A';       // 1바이트

문자열

#include <string>
string name = "홍길동";
string greeting = "Hello" + " " + "World!";//걍 한번에 띄어쓰기있이 붙여써도됨 왜 이따구로햇는지모르겟네?
string number_str = to_string(123); // 숫자를 문자열로 변환

기호상수

const double PI = 3.141592;
const int MAX_SIZE = 100;

auto 키워드 (자동 타입 추론)

auto number = 42;        // int로 추론
auto price = 99.99;      // double로 추론
auto name = "김철수";     // const char*로 추론

📥📤 4. 입력과 출력

🔹 연산자 해석

  • << : 삽입 연산자 (insertion operator) 👉 cout << "어쩌구"; = "어쩌구"라는 데이터를 출력 스트림에 집어넣는다 → 화면에 표시됨.
  • >> : 추출 연산자 (extraction operator) 👉 cin >> 변수명; = 입력 스트림에서 데이터를 꺼내서 변수에 저장한다.

🔹 비유

  • cout << : "데이터를 파이프(스트림)에 흘려보낸다 → 밖(모니터)로 간다"
  • cin >> : "파이프(스트림)에서 데이터를 꺼낸다 → 내 변수로 가져온다"

출력 (cout)

cout << "문자열 출력";
cout << 변수명;
cout << "값: " << 변수 << endl;

입력 (cin)

int age;
cin >> age;

string name;
cin >> name;  // 공백 전까지만 입력받음

// 여러 값 한번에 입력
int a, b;
cin >> a >> b;

실용 예제

#include <iostream>
#include <string>
using namespace std;

int main() {
    string name;
    int age;

    cout << "이름을 입력하세요: ";
    cin >> name;
    cout << "나이를 입력하세요: ";
    cin >> age;

    cout << name << "님의 나이는 " << age << "세입니다." << endl;
    return 0;
}

🔢 5. 연산자와 수식

산술 연산자

int a = 10, b = 3;
cout << a + b;  // 13 (덧셈)
cout << a - b;  // 7  (뺄셈)
cout << a * b;  // 30 (곱셈)
cout << a / b;  // 3  (나눗셈 - 정수)
cout << a % b;  // 1  (나머지)

비교 연산자

'bool'은 컴퓨터 프로그래밍에서 참(true)과 거짓(false)이라는 두 가지 값만 저장하는 논리 자료형(boolean type)을 의미하며, 영국 수학자 조지 불(George Boole)의 이름에서 유래했습니다. 이 자료형은 조건문이나 반복문에서 특정 상태를 참 또는 거짓으로 판단하여 제어하는 데 사용됩니다.

int x = 5, y = 3;
bool result1 = (x > y);   // true
bool result2 = (x == y);  // false
bool result3 = (x != y);  // true

🎲 6. 난수 생성

전통적인 방법

#include <ctime>
#include <cstdlib>

srand(time(NULL));        // 시드값 초기화
int dice = (rand() % 6) + 1;  // 1~6 사이 난수

📝 예상 문제 및 풀이

📌 문제 1: 기본 개념 (객관식)

C++의 개발자와 개발 장소는?

  1. Dennis Ritchie, AT&T 벨연구소
  2. Bjarne Stroustrup, AT&T 벨연구소
  3. James Gosling, Sun Microsystems
  4. Anders Hejlsberg, Microsoft

정답: 2번


📌 문제 2: 프로그램 구조 (단답형)

다음 빈칸을 채우시오.

_______ <iostream>
_______ namespace std;

int _______()
{
    cout << "Hello World!" << _______;
    _______ 0;
}

정답:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

📌 문제 3: 변수와 자료형 (서술형)

다음 변수 선언에서 잘못된 부분을 찾고 올바르게 수정하시오.

int 2number = 100;
char name = "홍길동";
bool isTrue = 1;
const PI = 3.14;

정답:

int number2 = 100;        // 변수명은 숫자로 시작할 수 없음
string name = "홍길동";    // 문자열은 string 타입 사용
bool isTrue = true;       // bool은 true/false 사용 권장
const double PI = 3.14;   // const는 타입 명시 필요

📌 문제 4: 입출력 프로그래밍 (실습형)

사용자로부터 두 정수를 입력받아 사칙연산 결과를 모두 출력하는 프로그램을 작성하시오.

정답:

#include <iostream>
using namespace std;

int main() {
    int a, b;
    cout << "두 정수를 입력하세요: ";
    cin >> a >> b;

    cout << a << " + " << b << " = " << a + b << endl;
    cout << a << " - " << b << " = " << a - b << endl;
    cout << a << " * " << b << " = " << a * b << endl;
    cout << a << " / " << b << " = " << a / b << endl;
    cout << a << " % " << b << " = " << a % b << endl;

    return 0;
}

📌 문제 5: 실전 응용 (복합형)

다음 조건을 만족하는 프로그램을 작성하시오:

  • 사용자로부터 반지름을 입력받는다
  • 원의 넓이와 둘레를 계산한다
  • 결과를 소수점 둘째자리까지 출력한다

정답:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    const double PI = 3.141592;
    double radius;

    cout << "원의 반지름을 입력하세요: ";
    cin >> radius;

    double area = PI * radius * radius;
    double circumference = 2 * PI * radius;

    cout << fixed << setprecision(2);
    cout << "원의 넓이: " << area << endl;
    cout << "원의 둘레: " << circumference << endl;

    return 0;
}

📌 문제 6: 오류 찾기 (디버깅)

다음 프로그램의 오류를 찾아 수정하시오.

#include iostream
using namespace std

int main()
{
    int age
    cout << "나이를 입력하세요: "
    cin >> age
    cout << "당신의 나이는 " << age << "세입니다." << endl
    return 0
}

정답 (수정된 코드):

#include <iostream>     // < > 누락
using namespace std;    // 세미콜론 누락

int main()
{
    int age;            // 세미콜론 누락
    cout << "나이를 입력하세요: ";  // 세미콜론 누락
    cin >> age;         // 세미콜론 누락
    cout << "당신의 나이는 " << age << "세입니다." << endl;  // 세미콜론 누락
    return 0;           // 세미콜론 누락
}

0개의 댓글