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
의 코드도 연속적으로 실행됩니다. 따라서 Wednesday
와 Thursday
가 모두 출력됩니다.
문제 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
은 항상 참이 됩니다.