Urdoing=͟͟͞♡d

데이터분석가를 꿈꾸는 박열심의 IT 공간

STUDY✏️/C++

명품 C++ 프로그래밍 연습문제 이론문제 2장 정답 및 풀이

박열심 2024. 3. 25. 13:05
반응형

제가 푼 문제만 올려서 중간중간 빠지는 문항이 있을 수 있습니다!


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

int main()


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

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

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

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

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

개발자 편의를 위해 C++ 표준에서는 main() 함수에 대해서만 예외적으로 return 문 생략이 가능하다.
 

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

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

return 0;

개발자 편의를 위해 C++ 표준에서는 main() 함수에 대해서만 예외적으로 return 문 생략이 가능하다.

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

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

I love C++

I love programming


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

(1)

#include <iostream>
using std::cout;
int main()
{
     int count = 0;
     std::cin >> count;
     cout << count + 1;
     return 0;
}
cout << count + 1; 문장을 보면 cout에만 std:: 접두어가 생략되어 있으므로, cout에 대해서만 std::를 생략했음을 알 수 있다. 따라서 using 지시어를 이용하여 cout 앞의 std::를 생략하는 코드를 작성하면 된다.

(2)

#include <iostream>
using namespace std;
int main()
{
     cout << "I love C++" << endl;
     cout << "I love programming";
     return 0;
}
std 이름 공간에 선언된 cout과 endl이 모두 std:: 접두어가 생략되어 있으므로, 모든 std::를 생략했음을 알 수 있다. 따라서 namespace 키워드와 함께 using 지시어를 사용하여 std::를 생략하는 코드를 작성하면 된다.

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

1) #include <iostream>;

2) using namespace std

3) std::cin << name;

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

1) #include <iostream>
#include 할 때는 문장 끝에 ; 를 추가할 필요없다.
2) using namespace std;
using 지시어를 사용할 때는 문장 끝에 ; 를 추가해야 한다.
3) std::cin >> name;
표준 입력 스트림 cin은, 스트림 추출 연산자 >>와 함께 사용해야 한다.
4) std::cout << 1 << 2 << 'a' << "hello" << '\n';
std: 가 아니라 std:: 이다.

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

1) using std::cin;

2) int year = 1;

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

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

3) int n=1; cout << n+200;
표준 출력 스트림 cout은, 스트림 삽입 연산자 <<와 함께 사용해야 한다.
4) year = 2014; cout << 2014 << "년";
2)에서 변수 year을 이미 선언했으므로, 4)에서 다시 타입을 지정할 필요가 없다.
출력할 데이터를 연결하여 출력하고 싶으면 +가 아닌 <<로 쭉 작성하면 된다 !

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

#define MAX 100
#define MIN 0

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

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

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

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

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

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

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

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

4) 마지막에 '\0'을 추가해야 하므로 배열의 크기는 문자수보다 더 커야한다.
5) 연산자 >> 는 공백 문자를 포함하지 않는다. 공백 문자를 만나면 그 전까지 입력된 문자들을 하나의 문자열로 인식하기 때문.

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

<cstring>


12 ​다음 프로그램이 있다.

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

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

Kitae님 환영합니다

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

Kitae님 환영합니다

연산자 >> 는 공백 문자를 만나면 그 전까지 입력된 문자들을 하나의 문자열로 인식하므로, Kitae까지만 인식된다.

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

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

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

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

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

getline()의 마지막 매개변수의 디폴트는 '\n'이므로, 생략하여 작성하면 다른 코드가 되어버린다.

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

I love C++<Enter>

1) cin >> buf;

2) cin.getline(buf, 11);

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

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

>> 으로는 공백 문자를 포함할 수 없으므로 I love C++ 이라는 문장 전체를 읽을 수 없다.

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

namespace


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

std


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

std


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

<iostream>


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

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

[실행 결과]

20 컴퓨터 공학과


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

#include <iostream>
using namespace std;
int main()
{
     for(int n=0; n<4; n++)
     {
          for(int i=1; i<=n+1; i++)
               cout << "*";
          cout << endl;
     }
}

[실행 결과]

*

**

***

****

반응형