카테고리 없음

C++ 요점 정리와 예상 문제

서사대생 2024. 10. 25. 13:41

C++ 수업 계획서를 참고해서 요점을 정리하고 예상 문제를 만들었다.

(나는 수강하지 않는 과목이다.)

 

문제와 설명에 오류가 있을 수 있으니 주의!

요점 정리

1. C++이란

  • C++이란 무엇인가?
    C++는 객체 지향 프로그래밍 언어로, C 언어를 기반으로 하지만 더 많은 기능과 유연성을 제공합니다.
  • 비주얼 스튜디오 설치하기
    C++ 개발을 위한 통합 개발 환경(IDE)으로, 비주얼 스튜디오를 설치하고 설정하는 과정을 포함합니다.

2. 변수

  • 변수란?
    값을 저장하기 위한 메모리 공간의 이름입니다. 변수는 특정 데이터 타입을 가지며, 데이터의 종류에 따라 저장 방식이 달라집니다.
  • 변수 선언, 자료형과 범위
    변수는 int, char, float 등 다양한 자료형으로 선언할 수 있습니다. 범위(scope)는 변수의 유효 범위를 결정합니다.
  • 문자와 상수 const
    문자는 'A', 'B'와 같은 단일 문자를 저장하며, 상수는 값이 변경되지 않는 변수를 의미합니다. const 키워드를 사용하여 상수를 선언할 수 있습니다.

3. 연산자

  • 연산자란?
    변수를 처리하거나 값을 연산하기 위한 기호입니다.
  • 대입 연산자
    =를 사용하여 값을 변수에 저장합니다.
  • 산술 연산자
    +, -, *, /, %와 같은 연산자로 수학적 계산을 수행합니다.
  • 관계 연산자
    ==, !=, <, >, <=, >=로 두 값을 비교합니다.
  • 논리 연산자
    &&, ||, !를 사용하여 논리적인 조건을 결합하거나 반전합니다.
  • 조건 연산자
    ? : (삼항 연산자)로 간단한 조건문을 표현할 수 있습니다.
  • 비트 연산자
    &, |, ^, ~, <<, >> 연산자로 비트 단위로 연산을 수행합니다.

4. 조건문 1

  • if
    조건이 참일 때 특정 코드를 실행합니다.
  • if else
    조건이 참일 때는 if, 거짓일 때는 else의 코드를 실행합니다.

5. 조건문 2

  • if else if else
    여러 조건을 순차적으로 평가하여 참인 조건에 해당하는 코드를 실행합니다.
  • 이중 조건, switch
    switch 문은 변수를 여러 값과 비교하여 해당하는 코드를 실행합니다.

6. 반복문 1

  • for 반복문
    일정 횟수만큼 코드를 반복 실행하는 구조입니다. 초기화, 조건, 증가/감소를 통해 반복 횟수를 제어합니다.
  • 이중 for 반복문
    for 반복문을 중첩하여 다차원 데이터를 처리할 수 있습니다.

7. 반복문 2

  • while
    조건이 참일 동안 코드를 반복 실행합니다.
  • do-while
    코드를 먼저 한 번 실행하고, 이후 조건이 참일 동안 반복 실행합니다.

예상 문제

1주차 예상 문제

문제 1:
C++ 언어는 어떤 언어를 기반으로 확장되었나요?

A) Java
B) Python
C) C
D) JavaScript

답: C) C


문제 2:
다음 중 C++의 주요 특징이 아닌 것은 무엇인가요?

A) 객체 지향 프로그래밍 지원
B) 메모리 관리의 자동화 (Garbage Collection)
C) 다중 패러다임 지원
D) 템플릿을 통한 제네릭 프로그래밍 지원

답: B) 메모리 관리의 자동화 (Garbage Collection)


문제 3 (단답형):
C++ 프로그램을 개발하기 위해 가장 널리 사용되는 통합 개발 환경(IDE)의 이름은 무엇인가요?

답: 비주얼 스튜디오 (Visual Studio)


문제 4:
비주얼 스튜디오에서 새로운 C++ 프로젝트를 생성하기 위한 올바른 순서는 무엇인가요?

A) 파일 > 새로 만들기 > 파일
B) 파일 > 열기 > 프로젝트
C) 파일 > 새로 만들기 > 프로젝트
D) 파일 > 저장하기

답: C) 파일 > 새로 만들기 > 프로젝트


문제 5:
다음 중 변수에 대한 설명으로 옳은 것은 무엇인가요?

A) 변수는 한 번 선언되면 값을 변경할 수 없다.
B) 변수는 데이터를 저장하기 위한 메모리 공간의 이름이다.
C) 변수는 항상 전역 범위를 가진다.
D) 변수는 함수의 일종이다.

답: B) 변수는 데이터를 저장하기 위한 메모리 공간의 이름이다.


2주차 예상 문제

문제 1:
다음 중 C++에서 변수를 선언할 때 올바른 문법은 무엇인가요?

A) int 1number;
B) float price = 19.99;
C) char 'A';
D) double total = "100.5";

답: B) float price = 19.99;


문제 2:
C++에서 변수의 범위(scope) 에 대한 설명으로 옳은 것은 무엇인가요?

A) 전역 변수는 프로그램 전체에서 접근할 수 없다.
B) 지역 변수는 선언된 함수나 블록 내에서만 유효하다.
C) 함수 내에서 선언된 변수는 다른 함수에서도 접근할 수 있다.
D) 변수의 범위는 변수의 생존 기간과 무관하다.

답: B) 지역 변수는 선언된 함수나 블록 내에서만 유효하다.


문제 3 (단답형):
C++에서 상수를 선언할 때 사용하는 키워드는 무엇인가요?

답: const


문제 4:
다음 중 C++에서 문자(char) 타입의 변수 선언으로 올바른 것은 무엇인가요?

A) char letter = "A";
B) char letter = 'A';
C) char letter = A;
D) char letter = 65;

답: B) char letter = 'A';


문제 5:
다음 코드에서 변수 x의 범위(scope)는 어디까지인가요?

#include <iostream>
using namespace std;

int main() {
    int x = 10;
    if (x > 5) {
        int y = 20;
        cout << y;
    }
    cout << x;
    return 0;
}

A) main 함수 전체
B) if 문 내부
C) main 함수 외부
D) 프로그램 전체

답: A) main 함수 전체


3주차 예상 문제

문제 1:
다음 중 C++에서 산술 연산자가 아닌 것은 무엇인가요?

A) +
B) -
C) &&
D) *

답: C) &&


문제 2:
C++에서 대입 연산자의 우선순위가 가장 높은 것은 무엇인가요?

A) +
B) =
C) *
D) ==

답: C) *


문제 3 (단답형):
C++에서 두 값을 비교하여 같지 않음을 나타내는 관계 연산자는 무엇인가요?

답: !=


문제 4:
다음 코드에서 변수 result의 값은 얼마인가요?

int a = 5;
int b = 2;
int result = a / b;

A) 2
B) 2.5
C) 3
D) 컴파일 에러

답: A) 2


문제 5:
C++에서 비트 연산자가 아닌 것은 무엇인가요?

A) &
B) |
C) &&
D) ^

답: C) &&


4주차 예상 문제

문제 1:
다음 중 C++에서 if 문을 올바르게 사용하는 예는 무엇인가요?

A)

if x > 10 {
    cout << "x is greater than 10";
}

B)

if (x > 10)
    cout << "x is greater than 10";

C)

if x > 10 then
    cout << "x is greater than 10";

D)

if [x > 10] {
    cout << "x is greater than 10";
}

답: B)

if (x > 10)
    cout << "x is greater than 10";

문제 2:
다음 코드의 출력 결과는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    int score = 85;
    if (score >= 90)
        cout << "A";
    else
        cout << "B";
    return 0;
}

A) A
B) B
C) 아무것도 출력되지 않는다.
D) 컴파일 에러가 발생한다.

답: B) B


문제 3 (단답형):
C++에서 if-else 문을 사용하여 변수 num이 양수인지 음수인지 판단하려면 조건을 어떻게 작성해야 하나요? 간단히 작성하세요.

답:

if (num > 0) {
    // 양수일 때의 처리
} else {
    // 음수일 때의 처리
}

문제 4:
다음 중 if-else 문에서 올바르게 중첩된 구조는 무엇인가요?

A)

if (a > b)
    if (b > c)
        cout << "A";
    else
        cout << "B";

B)

if (a > b) {
    cout << "A";
} else 
    if (b > c) {
        cout << "B";
    }

C)

if (a > b) {
    if (b > c)
        cout << "A";
} else {
    cout << "B";
}

D)

if (a > b) 
    cout << "A";
    else 
        cout << "B";

답: C)

if (a > b) {
    if (b > c)
        cout << "A";
} else {
    cout << "B";
}

문제 5:
다음 코드에서 조건문이 올바르게 작동하지 않는 이유는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    int age = 20;
    if (age >= 18)
        cout << "Adult";
        cout << "You can vote.";
    return 0;
}

A) 조건문에 오류가 없다.
B) else 문이 누락되었다.
C) 중괄호 {}가 필요하다.
D) 변수 age의 값이 잘못되었다.

답: C) 중괄호 {}가 필요하다.

해설:
if 문 다음에 중괄호 {}를 사용하지 않으면 if 조건에만 첫 번째 cout 문이 포함됩니다. 두 번째 cout 문은 항상 실행됩니다. 따라서 의도한 대로 동작하려면 중괄호를 사용해야 합니다.

if (age >= 18) {
    cout << "Adult";
    cout << "You can vote.";
}

5주차 예상 문제

문제 1:
다음 중 C++에서 if-else if-else 문을 올바르게 사용하는 예는 무엇인가요?

A)

if (score > 90)
    grade = 'A';
else if (score > 80)
    grade = 'B';
else
    grade = 'C';

B)

if score > 90 {
    grade = 'A';
} elseif score > 80 {
    grade = 'B';
} else {
    grade = 'C';
}

C)

if (score > 90)
    grade = 'A'
elseif (score > 80)
    grade = 'B';
else
    grade = 'C';

D)

if (score > 90) {
    grade = 'A';
} else if (score > 80 {
    grade = 'B';
} else {
    grade = 'C';
}

답: A)

if (score > 90)
    grade = 'A';
else if (score > 80)
    grade = 'B';
else
    grade = 'C';

문제 2:
다음 코드의 출력 결과는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    int num = 15;
    if (num > 10) {
        if (num < 20)
            cout << "Between 10 and 20";
        else
            cout << "Greater than or equal to 20";
    } else {
        cout << "10 or less";
    }
    return 0;
}

A) Between 10 and 20
B) Greater than or equal to 20
C) 10 or less
D) 컴파일 에러가 발생한다.

답: A) Between 10 and 20


문제 3 (단답형):
C++에서 switch 문을 사용할 때 비교할 수 없는 데이터 타입은 무엇인가요? 예를 들어, 다음 중 어느 타입은 switch 문의 case 라벨로 사용할 수 없나요?

답: float 또는 double

설명:
switch 문은 정수형(int, char, enum 등)이나 문자형 데이터에 대해서만 사용할 수 있으며, float, double과 같은 실수형 데이터는 case 라벨로 사용할 수 없습니다.


문제 4:
다음 switch 문에서 변수 day의 값이 3일 때 출력되는 내용은 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    int day = 3;
    switch(day) {
        case 1:
            cout << "Monday";
            break;
        case 2:
            cout << "Tuesday";
            break;
        case 3:
            cout << "Wednesday";
        case 4:
            cout << "Thursday";
            break;
        default:
            cout << "Invalid day";
    }
    return 0;
}

A) Wednesday
B) WednesdayThursday
C) Thursday
D) Invalid day

답: B) WednesdayThursday

해설:
case 3에서 break; 문이 없기 때문에 case 3의 코드가 실행된 후 case 4의 코드도 연속적으로 실행됩니다. 따라서 WednesdayThursday가 모두 출력됩니다.


문제 5:
다음 중 switch 문의 특징으로 옳지 않은 것은 무엇인가요?

A) switch 문은 다양한 case 라벨을 가질 수 있다.
B) switch 문에서 break 문은 선택적이다.
C) switch 문은 실수형 데이터를 비교할 수 있다.
D) switch 문의 case 라벨은 상수여야 한다.

답: C) switch 문은 실수형 데이터를 비교할 수 있다.

해설:
switch 문은 정수형(int, char, enum 등) 데이터에 대해서만 사용할 수 있으며, float, double과 같은 실수형 데이터는 사용할 수 없습니다.


6주차 예상 문제

문제 1:
다음 중 C++에서 for 반복문의 올바른 구조는 무엇인가요?

A)

for (int i = 0; i < 10; i++) {
    // 실행할 코드
}

B)

for int i = 0; i < 10; i++ {
    // 실행할 코드
}

C)

for (int i = 0; i < 10; i++):
    // 실행할 코드

D)

for (int i = 0; i < 10; i++) 
    // 실행할 코드
}

답: A)

for (int i = 0; i < 10; i++) {
    // 실행할 코드
}

문제 2:
다음 for 반복문이 출력하는 결과는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        cout << i << " ";
    }
    return 0;
}

A) 1 2 3 4 5
B) 0 1 2 3 4
C) 1 2 3 4
D) 2 3 4 5 6

답: A) 1 2 3 4 5


문제 3 (단답형):
다음 중 이중 for 반복문을 사용하여 3x3 행렬을 출력하는 올바른 코드 조각을 완성하세요.

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        cout << "(" << i << "," << j << ") ";
    }
    // 여기에 코드를 추가하세요
}

답:

cout << endl;

설명:
각 행이 끝날 때 줄바꿈을 하기 위해 cout << endl;을 추가해야 합니다.


문제 4:
다음 코드에서 for 반복문이 무한 루프에 빠지는 이유는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i >= 0; i++) {
        cout << i << " ";
    }
    return 0;
}

A) i의 초깃값이 잘못되었다.
B) 조건 i >= 0이 항상 참이기 때문에 반복이 멈추지 않는다.
C) i++ 대신 i--를 사용해야 한다.
D) cout 문이 잘못되었다.

답: B) 조건 i >= 0이 항상 참이기 때문에 반복이 멈추지 않는다.

해설:
i는 0부터 시작하여 계속 증가하므로 i >= 0 조건은 항상 참입니다. 따라서 반복문이 종료되지 않고 무한 루프에 빠집니다.


문제 5:
다음 이중 for 반복문을 사용하여 별(*)을 출력하는 프로그램의 출력 결과는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= i; j++) {
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}

A)

***
***
***

B)

*
**
***

C)

***
**
*

D)

*
*
*

답: B)

*
**
***

해설:
외부 for 반복문(i)이 1부터 3까지 증가하고, 내부 for 반복문(j)은 i의 값만큼 별을 출력합니다. 따라서 첫 번째 줄에 1개, 두 번째 줄에 2개, 세 번째 줄에 3개의 별이 출력됩니다.


7주차 예상 문제

문제 1:

다음 중 C++에서 while 반복문의 올바른 구조는 무엇인가요?

A)

while (조건) {
    // 실행할 코드
}

B)

while 조건 {
    // 실행할 코드
}

C)

while [조건] {
    // 실행할 코드
}

D)

while (조건);
    // 실행할 코드

답: A)

while (조건) {
    // 실행할 코드
}

문제 2:

다음 코드의 출력 결과는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    int i = 1;
    while (i <= 5) {
        cout << i << " ";
        i++;
    }
    return 0;
}

A) 1 2 3 4 5

B) 1 2 3 4

C) 0 1 2 3 4

D) 2 3 4 5 6

답: A) 1 2 3 4 5


문제 3 (단답형):

C++에서 do-while 반복문의 종료 조건은 어디에서 검사하나요?

답: 반복문의 끝 부분에서 조건을 검사합니다.

설명:

do-while 문은 코드를 먼저 실행한 후에 조건을 검사하므로, 최소 한 번은 반드시 실행됩니다.


문제 4:

다음 중 do-while 반복문의 특징으로 옳지 않은 것은 무엇인가요?

A) 조건을 반복문의 끝에서 검사한다.

B) 반복문을 최소 한 번은 실행한다.

C) 조건이 거짓이라면 반복문을 실행하지 않는다.

D) 세미콜론 ;을 반복문의 끝에 사용한다.

답: C) 조건이 거짓이라면 반복문을 실행하지 않는다.

해설:

do-while 문은 조건이 거짓이어도 최소 한 번은 실행됩니다.


문제 5:

다음 코드에서 무한 루프에 빠지는 이유는 무엇인가요?

#include <iostream>
using namespace std;

int main() {
    int n = 10;
    while (n > 0) {
        cout << n << " ";
        // n--;  // 이 부분이 주석 처리되어 있습니다.
    }
    return 0;
}

A) n의 초깃값이 잘못되었다.

B) n을 감소시키는 코드가 실행되지 않기 때문이다.

C) cout 문이 잘못되었다.

D) 조건식이 항상 참이 아니기 때문이다.

답: B) n을 감소시키는 코드가 실행되지 않기 때문이다.

해설:

n--; 코드가 주석 처리되어 있어 n의 값이 변하지 않으므로 조건식 n > 0은 항상 참이 됩니다.