다라다라V
article thumbnail
728x90
반응형
본 글은 "황기태"님의 [명품 C++ Programming]의 연습 문제 답을 공유하고자 작성되었으며, 필자가 직접 문제를 풀며 작성한 것이기에 오류가 있을 수 있습니다. 댓글로 알려주시면 반영하도록 하겠습니다.

시리즈 보기
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 3장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 5장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 6장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 7장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 8장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 8장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 9장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 9장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 10장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 10장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 11장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 11장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 12장 연습 문제 풀이 (이론 문제)
[C++] 명품 C++ Programming 12장 연습 문제 풀이 (실습 문제)
[C++] 명품 C++ Programming 13장 연습 문제 풀이 (이론 문제)

 

💡 01.

C++ 응용프로그램이 실행을 시작하는 함수의 원형은 무엇인가?

 

[정답]

(55쪽) C언어와 마찬가지로 main( ) 함수는 C++ 프로그램의 실행 시작점입니다.

 

 

 

 

💡 02.

C++에서 main( ) 함수에 대한 설명 중 틀린 것은?

① C++ 표준에서 정한 main( ) 함수의 리턴 타입은 int이다

② void main( )으로 작성해도 대부분의 컴파일러에서는 처리된다.

③ main( ) 함수는 반드시 return 문을 가지고 있어야 한다.

④ main( ) 함수는 반드시 정수 0을 리턴할 필요가 없다.

 

[정답]  ③번

(56쪽) int main( ) 함수는 정수를 리턴하는 return 문이 필요합니다 그러나 개발자의 편의를 위해 C++ 표준에서 main( ) 함수에 대해서만 예외적으로 return 문을 생략할 수 있습니다,

 

 

 

 

💡 03.

다음 소스에서 생략해도 되는 라인은 어디인가?

#incldue <iostream>
int main() {
    std::cout << "I love C++\n";
    std::cout << "I love Programming";
    return 0;
}

 

[정답]  

return 0;

(56쪽) C++ 의 main( ) 함수에서는 return문을 생략할 수 있습니다.

 

 

 

 

💡 04.

다음 코드는 C 컴파일러로 컴파일하면 컴파일 오류가 발생하지만 C++ 컴파일러로 컴파일하면 정상적으로 컴파일된다.

int a;
a = 4;
int square = a * a;

 

(1) C 컴파일러로 컴파일할 때 어떤 컴파일 오류가 발생하는가?

(2) C++ 컴파일러로 컴파일할 때 정상적으로 컴파일되는 것은 C++ 언어의 어떤 특성 때문인가?

(3) 이 특징이 가진 장단점은 무엇인가?

 

 

[정답]  

(1)

실제로 저 파일을 컴파일하면 "error C2099: 이니셜라이저가 상수가 아닙니다."이라는 메시지가 뜹니다. C언어에서는 전역변수는 상수만 초기화하므로 전역 변수로 다른 변수의 값으로 초기화할 수 없습니다.

(2)

(68쪽) C++ 는 실행문 중간에 변수를 선언할 수 있습니다.

(3) 

장점

  1. 변수를 사용하는 코드 바로 위에 변수를 선언할 수 있어 코드를 읽기 쉽게 만든다
  2. 변수 이름을 잘못 타이핑하는 실수를 줄일 수 있다.

단점

  1. 선언된 변수들이 코드 사이에 흩어져 있으므로 선언된 변수를 알아보기 어렵다.
  2. 변수를 잘못 타이핑하여도 컴파일이 정상적으로 되어 실수를 알 수 없다.

 

 

 

💡 05.

다음 프로그램의 실행 결과는 무엇인가?

#include <iostream>
int main(){
    std::cout << "I love C++\n" << "I love programming";
    return 0;
}

 

[정답]  

"\n"은 개행 문자로 줄을 바꾸는 ENTER의 기능과 같습니다.

때문에 "I love C++"이 출력된 뒤 "I love programming"은 다음 줄에 출력됩니다.

 

 

 

💡 06.

다음 프로그램에 컴파일 오류가 발생하지 않도록 빈칸을 채워라.

(1)

#include <iostream>
_______________________
int main() {
    int count = 0;
    std::cin >> count;
    cout << count + 1;
    return 0;
}

 

[ 정답 ]

using std::cout;

(63쪽) std 이름 공간에 선언된 수 많은 이름을 사용할 때마다 std:: 접두어를 붙이는 것은 번거롭기 때문에 using 지시어를 사용하여 이름 공간 접두어를 생략할 수 있습니다.

 

(2)

#include <iostream>
_______________________
int main() {
    cout << "I love C++" << endl;
    cout << "I love programming";
    return 0;
}HTML

 

[정답] 

using namespace std;

(63쪽) 위의 코드와 달리 std 이름 공간에 선언된 모든 이름에 대해 std::를 생략하였습니다. 이는 namespace 키워드와 함게 using 지시어를 사용하면 됩니다. using std::cout을 하는 경우에는 endl 에서 문제가 생깁니다.

 

 

 

 

💡 07.

다음 C++ 프로그램 코드에서 틀린 부분을 수정하라.

(1) #include <iostream>;

(2) using namespace std

(3) std::cin << name;

(4) std:cout << 1 << 2 << 'a' << "hello" << '\n';

 

[정답]  

(1) #include <iostream>

iostream은 헤더파일로 뒤에 ; (세미콜론)이 붙지 않습니다. 

(2) using namespace std;

이 문장 뒤에는 ; (세미콜론)이 붙어야합니다.

(3) std::cin >> name;

cin은 >> 연산자를 이용하여 사용자로부터 키를 입력받습니다.

(4) std::cout << 1 << 2 << 'a' << "hello" << '\n';

범위지정 연산자인 :: 으로 이름 공간(std)에 정의된 이름(cout)에 접근할 수 있습니다.

 

 

💡 08.

다음 C++ 프로그램 코드에서 틀린 부분이 있으면 수정하라.

(1) using std::cin;

(2) int year = 1; //year은 년도를 나타낸다.

(3) int n=1; cout >> n+200;

(4) int year = 2014; cout << 2014+"년";

 

[정답]  

(1) 틀린 부분 없음

(2) 틀린 부분 없음

(3) int n=1; cout << n+200;

(57쪽) cout은 C++ 표준 출력 스트림 객체로 스트림 삽입 연산자인 << 와 함께 사용됩니다. 

(4) int year = 2014; cout << year << "년"; 

(57쪽) 한 줄에 여러 개의 << 연산자를 이용하여 여러 개의 데이터를 출력할 수 있습니다. << 연산자는 문자열 뿐만 아니라 C++ 기본 타입 데이터도 출력할 수 있습니다.

 

 

 

 

 

💡 09.

다음은 개발자가 작성한 myheader.h 파일의 소스이다.

#define MAX 100
#define MIN 0

다음 myprog.cpp 프로그램에서 빈칸에 적절한 라인을 삽입하라.

#include <iostream>
using namespace std;
_______________________ // 이 곳에 myheader.h를 include하는 문을 작성하라.
int main() {
    cout << MAX << MIN;
    return 0;
}

 

[정답]  

#include "myheader.h"

(80쪽) #include 문에 해더 파일을 지정할 때는 헤더 파일의 존재 위치에 따라 <헤더 파일>과 "헤더 파일"로 달리 사용됩니다. 개발자가 직접 추가한 헤더파일을 사용할 경우에는 #include "헤더 파일"의 형태를 취합니다.

 

 

 

 

💡 10.

C++ 문자열에 대한 다음 질문에 O, X로 답하라.

(1) C-스트링이란 C언어에서 문자열을 다루는 방식이다. ( )

(2) C++에서 C-스트링 방식을 문자열이 사용된다. ( )

(3) C++에서는 문자열을 다루기 위한 string 클래스가 이용된다. ( )

(4) char name[ ]="C++";이 컴파일되면 name[ ] 배열의 크기가 3이 된다.( )

(5) char name[10]; cin >>name;를 실행하면 공백 문자를 포함하여 키보드로부터 최대 9개의 문자를 읽을 수 있다. ( )

 

[정답]  

(1) O

(2) O

(3) O

(4) X

(70쪽) C-스트링 방식을 사용하면 널문자('\0')가 포함되므로 배열의 크기는 문자수보다 1 크게 설정됩니다.

(5) X

>>연산자는 공백 문자(white space character)를 만나면 그 전까지 입력된 문자들을 하나의 문자열로 인식합니다. 때문에 공백 문자를 제외하고 키보드로부터 최대 9개의 문자를 읽을 수 있습니다.

 

 

 

 

💡 11.

C-스트링을 다루기 위해, strcmp( ), strlen( ) 등의 함수를 사용하고자 할 때 include 해야 하는 표준 헤더 파일은 무엇인가?

 

[정답]  

# include <cstring> 

(71쪽) C++ 응용 프로그램은 C-스트링을 다루기 위해 C 라이브러리 함수들을 그대로 사용할 수 있습니다. <cstring>이나 <string.h> 헤더 파일을 include 하면 됩니다. <cstring>은 내부적으로 <string.h>를 include하지만 C++ 표준에 따라 <cstring> 헤더 파일을 incluede 하는 것이 바람직합니다.

 

 

 

💡 12.

다음 프로그램이 있다.

#include <iostream>
int main() {
    char name[20];
    std::cout << "이름을 입력하세요?";
    std::cin >> name;
    std:: cout << name << "님 환영합니다";
    return 0;
}

 

(1) 프로그램을 실행하고 다음과 같이 키보드로 Kitae를 입력한 결과는 무엇인가?

이름을 입력하세요? Kitae
_______________________

 

[정답]  

"Kitae님 환영합니다" 라는 문장이 출력됩니다.

 

 

(2) 프로그램을 실행하고 다음과 같이 키보드로 Kitae Hwang을 입력한 결과는 무엇인가?

이름을 입력하세요?Kitae Hwang
_______________________

 

[정답]

"Kitae님 환영합니다" 라는 문장이 출력됩니다. cin은 공백 문자를 입력받지 못하기 때문입니다.

 

 

 

💡 13.

cin.getline(buf, 100, ';')에 대한 설명으로 틀린 것은?

① buf는 아마 char buf[100];으로 선언되어 있을 것이다.

② 키보드로부터 최대 99개의 문자를 읽어 buf[ ] 배열에 저장한다.

③ 키보드 입력 도중 ';' 문자를 만나면 getline( ) 함수는 입력을 종료하고 끝에 '\0'를 삽입하고 리턴한다.

④ cin.getline(buf, 100);로 생략하여 써도 무관하다.

 

[정답]   ④번

(74쪽~75쪽)

cin.getline(char buf[ ], int size, char delimitChar);
- buf : 키보드로부터 읽은 문자열을 저장할 배열
- size : buf[ ] 배열의 크기
- delimitChar : 문자열 입력 끝을 지정하는 구분 문자

cin.getline(buf, 100, ';') ;을 입력받으면 문자 입력을 종료합니다. ;을 생략하는 경우 delimitChar의 디폴트 값인 '\n' 설정되므로 cin.getline(buf, 100);은 cin.getline(buf, 100, '\n'); 과 같습니다.

 

 

 

 

💡 14.

char buf[100];가 선언되어 있다고 가정하고, 다음과 같이 <Enter> 키가 입력될 때까지 문자열을 읽는 코드로 잘못된 것은 무엇인가?

I love C++<Enter>

① cin >> buf;

② cin.getline(buf, 11);

③ cin.getline(buf, 20, '\n');

④ cin.getline(buf, 11, '.');

 

[정답]  ①번

(74쪽) >> 연산자는 공백 문자를 만나면 그 전까지 입력된 문자들을 하나의 문자열로 인식합니다. 공백이 포함된 "I love C++"이라는 문장을 입력받기 위해서는 cin 객체의 getline( ) 멤버 함수를 이용해야합니다.

 

 

 

💡 15.

C++에서 여러 사람들이 나누어 프로그램을 개발할 때 동일한 이름의 변수나 클래스, 함수 등이 충돌하는 것을 막기 위해, 개발자가 자신만의 이름 공간을 생성할 수 있도록 새로 도입한 키워드(혹은 개념)는 무엇인가?

 

[정답]  

namespace

(62쪽) 2003년 C++ 표준에서는 여러 프로젝트나 여러 사람들이 작성한 프로그램에서 변수, 함수, 클래스 등의 이름(identifier)이 충돌하는 것을 막기 위해 개발자 고유의 이름 공간을 생성하는 namespace 키워드를 도입했습니다.

 

 

 

💡 16.

C++ 표준 라이브러리가 모두 선언된 이름 공간은 무엇인가?

 

[정답]   

std

(63쪽) std는 2003년 C++ 표준에서 정한 표준 이름 공간으로서, 모든 C++ 표준 라이브러리는 std 이름 공간에 만들어졌습니다. 

 

 

 

💡 17.

C++ 표준에서 입출력을 위한 클래스, 함수, 객체들이 포함된 이름 공간은 무엇인가?

 

[정답]

std

 

 

 

💡 18.

C++ 표준에서 cin, cout 객체는 어떤 헤더 파일에 선언되어 있는가?

 

[정답]  

<iostream>

(63쪽) C++ 표준에서 지원되는 모든 라이브러리는 std 이름 공간에 구현되어 있기 때문에 <iostream> 헤더 파일 내에 선언된 모든 클래스, 객체, 함수들을 사용할 때는 std::로 접근해야합니다.

 

 

 

 

💡 19.

다음 화면에 나이와 학과를 출력하는 main.cpp 프로그램을 작성한 사례이다. 빈칸에 적절한 코드를 삽입하라.

#include <iostream>
using namespace std;
int main() {
    int age = 20;
    const char* pDept = "컴퓨터 공학과";
    _______________________
}
20 컴퓨터 공학과

 

 

[정답]  

#include <iostream>
using namespace std;

int main() {
    int age = 20;
    const char* pDept = "컴퓨터 공학과";
    cout << age << " " << pDept;
}

 

 

 

 

 

💡 20.

다음 출력 결과와 같은 코드를 작성하고자 한다. 다음 C++ 프로그램을 완성하라.

#include <iostream>
using namespace std;
int main() {
    for(int n=0; n<4; n++){
        _______________________
        _______________________
        _______________________
    }
}
*
**
***
****

 

[정답]

#include <iostream>
using namespace std;

int main() {
    for (int n = 0; n < 4; n++) {
        for (int j = 0; j <= n; j++)
            cout << "*";
        cout << endl; //cout << '\n';
    }
}

 

반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!