안녕하세요
개인 풀이이므로 오답이 있을 수 있습니다.
답이 다르다 생각하시면 댓글로 말씀해 주시면 감사드리겠습니다!
01. C++ 응용프로그램이 실행을 시작하는 함수의 원형은 무엇인가?
[정답]
C++(cpp)의 함수의 시작하는 함수의 원형은 int형이다.
02. C++에서 main() 함수에 대한 설명 중 틀린 것은?
① C++ 표준에서 정한 main() 함수의 리턴 타입은 int이다
② void main()으로 작성해도 대부분의 컴파일러에서는 처리된다.
③ main() 함수는 반드시 return 문을 가지고 있어야 한다.
④ main() 함수는 반드시 정수 0을 리턴할 필요가 없다.
[정답 : 3번]
C++에서는 return문을 반드시 가지고 있을 필요는 없다. C++의 경우 return 문이 생략 가능하다
03. 다음 소스에서 생략해도 되는 라인은 어디인가?
#incldue <iostream>
int main() {
std::cout << "I love C++\n";
std::cout << "I love Programming";
return 0;
}
[ 정답 ]
return 0;를 제거할 수 있다.
04. 다음 코드는 C 컴파일러로 컴파일하면 컴파일 오류가 발생하지만 C++ 컴파일러로 컴파일하면 정상적으로 컴파일된다.
int a;
a = 4;
int square = a * a;
(1) C 컴파일러로 컴파일할 때 어떤 컴파일 오류가 발생하는가?
(2) C++ 컴파일러로 컴파일할 때 정상적으로 컴파일되는 것은 C++ 언어의 어떤 특성 때문인가?
(3) 이 특징이 가진 장단점은 무엇인가?
68 page 참조
이 문제는 main() 함수안에 그냥 실행시켰을 경우에는 둘 다 문제없이 돌아가는 것 처럼 보인다.
두 언어 모두 실행문 중간중간에 변수를 선언하여 사용할 수 있다는 특성 때문이다.
하지만 반복 실행문 즉 for문과 같은 반복적으로 실행하는 문장의 경우 C언어는 오류를 발생 C++언어는 정상 작동한다.
[ 정답 ]
(1) - C 컴파일러의 경우 위에 일반 실행문에서는 C++과 문제없이 컴파일 되지만 반복 실행문의 경우(for, while, do-while) 반복 실행문이 사용되기 전에 미리 변수가 선언되어 있어야 한다.
(2) - C++ 컴파일러의 경우 소스코드 어디서나 변수가 선언이 가능하지만 제일 큰 차이점으로는 객체지향적 특성 때문이라 생각한다. C언어는 절차지향적 언어 C++는 객체지향 언어의 특성의 차이로 인하여 반복 실행문에서 정상 컴파일 또는 오류를 발생하는 컴파일로 나눠진다 생각한다.
(3) - 장, 단점
장
1. 변수를 사용하는 코드 바로 위에 변수를 선언할 수 있어 코드를 읽기 쉽게 만든다.
2. 변수를 사용하기 바로 전 라인에 변수를 선언하면, 변수 이름을 잘못 타이핑하는 실수를 줄일 수 있다.
ex) for(int i...;...;..) for문 안에서 프로그램을 실행시키는 것이 대표적인 예이다.
단
1. 선언된 변수들이 코드 사이에 흩어져 있어서 소스코드가 매우 길어지고 방대해지면 선언된 모든 벼수를 한 눈에 보기 힘들고, 코드 사이사이에 선언되어있는 변수들을 찾는 것이 쉽지가 않다.
05. 다음 프로그램의 실행 결과는 무엇인가?
#include <iostream>
int main(){
std::cout << "I love C++\n" << "I love programming";
return 0;
}
[ 정답 ]
I love C++\n에서 \n은 개행을 의미 줄을 바꾸고 맨 앞으로 커서를 갖다 대는 것을 의미합니다.
I love programming이 다음 줄에 나옵니다.
출력 결과
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;
cout은 std가 없고 cin은 있는 경우이다. 이런 경우에 오류를 잡기 위해서 빈칸을 채우려면 std::cout을 작성해서 cout은 std를 호출하지 않아도 되는 상태로 만들어줍니다.
(2)
#include <iostream>
________________________
int main() {
cout << "I love C++" << endl;
cout << "I love programming";
return 0;
}
[ 정답 ] - using namespace std;
using namespace std를 사용하면 된다.
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>
(2) using namespace std;
(3) std::cin >> name;
(4) std::cout << 1 << 2 << 'a' << "hello" << '\n';
08. 다음 C++ 프로그램 코드에서 틀린 부분이 있으면 수정하라.
(1) using std::cout;
(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;
(4) - int year = 2014; cout << year << "년"; 또는 int year = 2014; std::cout << year << "년";
c++의 경우 +로 붙이지 않고 <<를 사용하여 붙이기 때문입니다.
[프로독학생님의 8번의 4번 해설]
문제에서 "c++의 경우 +로 붙이지 않고 <<를 사용하여 붙이기 때문입니다." c++의 경우에도 +를 붙이는 경우가 있기 때문에 위의 설명은 틀린 것 같습니다. + 연산자와 << 연산자는 서로 다른 동작을 하는 연산자입니다.
++
(1)번에 작성된 내용은 섬이오님에 피드백 덕분에 기존 using std::cin;에서 using std::cout;로 변경됐습니다!
09. 다음은 개발자가 작성한 myheader.h 파일의 소스이다.
#define MAX 100
#define MIN 0
다음 myprog.cpp 프로그램에서 빈칸에 적절한 라인을 삽입하라.
#include <iostream>
using namespace std;
__________________________
int main() {
cout << MAX << MIN;
return 0;
}
[ 정답 ]
#include "myheader.h"을 추가하면 된다. cpp의 경우 헤더 파일을 만들어서 넣을 때 <>로 묶는 것이 아닌 ""로 묶어서 넣는다
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
(5) - X
4 - 크기가 3이아닌 4이다.
5 - cin의 경우 공백을 입력 인식하지 못합니다. 또한 공백을 제외하고 최대 영문자의 경우 10글자, 한글의 경우 5글자를 인식할 수 있습니다.
한글은 1byte가 아닌 2byte이므로 배열의 용량을 2칸씩 잡습니다.
[프로독학생님의 10번의 5번 해설]
" cin의 경우 공백을 입력 인식하지 못합니다. 또한 공백을 제외하고 최대 영문자의 경우 10글자, 한글의 경우 5글자를 인식할 수 있습니다. 한글은 1byte가 아닌 2byte이므로 배열의 용량을 2칸씩 잡습니다."
공백을 인식하지 못한다는 사실은 맞지만 뒤의 내용은 틀렸습니다. 배열의 크기가 10이기 때문에 널문자를 제외한 나머지 공간에 문자를 넣을 수 있다고 보는게 맞습니다. 따라서 영문자의 경우 최대 9글자, 한글의 경우 4글자를 인식할 수 있습니다. 따라서 최대 9개의 문자를 읽을 수는 있습니다.
11. C-스트링을 다루기 위해, strcmp(), strlen() 등의 함수를 사용하고자 할 때 include 해야 하는 표준 헤더 파일은 무엇인가?
[ 정답 ]
# include <cstring> 또는
# include <string.h>
12. 다음 프로그램이 있다.
#include <iostream>
int main() {
char name[20];
std::cout << "이름을 입력하세요?";
std::cin >> name;
std:: cout << name << "님 환영합니다";
return 0;
}
(1) 프로그램을 실행하고 다음과 같이 키보드로 Kitae를 입력한 결과는 무엇인가?
이름을 입력하세요?Kitea __________________________ |
[정답]
이름을 입력하세요?Kitea Kitea님 환영합니다. |
(2) 프로그램을 실행하고 다음과 같이 키보드로 Kitae Hwang을 입력한 결과는 무엇인가?
이름을 입력하세요?Kitea Hwang __________________________ |
[정답]
이름을 입력하세요?Kitea Hwang Kitea님 환영합니다. |
cin의 경우 공백 즉 띄어쓰기를 포함하지 않으므로 Kitea가 끝으로 인식하고 Hwang은 출력되지 않는다.
13. cin.getline(buf, 100, ';')에 대한 설명으로 틀린 것은?
① buf는 아마 char buf[100];으로 선언되어 있을 것이다.
② 키보드로부터 최대 99개의 문자를 읽어 buf[] 배열에 저장한다.
③ 키보드 입력 도중 ';' 문자를 만나면 getline() 함수는 입력을 종료하고 끝에 '\0'를 삽입하고 리턴한다.
④ cin.getline(buf, 100);로 생략하여 써도 무관하다.
[ 정답 : 4번 ]
;를 생략해서 사용하면 Enter키가 입력되는 순간 종료가 된다.
getline 맨 끝에 ';'를 사용하면 Enter를 입력해도 작성이 종료되지 않는다 하지만 ; 를 입력하는 순간 종료된다.
14. char buf[100];가 선언되어 있다고 가정하고, 다음과 같이 <Enter> 키가 입력될 때까지 문자열을 읽는 코드로 잘못된 것은 무엇인가?
I love C++<Enter> |
① cin >> buf;
② cin.getline(buf, 11);
③ cin.getline(buf, 20, '\n');
④ cin.getline(buf, 11, '.');
[ 정답 : 1번 ]
cin의 경우 공백을 포함하지 않는다 getline() 함수를 사용해야 공백을 포함할 수 있다.
15. C++에서 여러 사람들이 나누어 프로그램을 개발할 때 동일한 이름의 변수나 클래스, 함수 등이 충돌하는 것을 막기 위해, 개발자가 자신만의 이름 공간을 생성할 수 있도록 새로 도입한 키워드(혹은 개념)는 무엇인가?
[ 정답 ] - 새로 도입한 키워드는 namespace이다.
16. C++ 표준 라이브러리가 모두 선언된 이름 공간은 무엇인가?
[ 정답 ] - 이름 공간( namespace )std이라 한다.
17. C++ 표준에서 입출력을 위한 클래스, 함수, 객체들이 포함된 이름 공간은 무엇인가?
[ 정답 ] - std (namespace)
18. C++ 표준에서 cin, cout 객체는 어떤 헤더 파일에 선언되어 있는가?
[ 정답 ] -<iostream>
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 << "\n";
}
}
OR
조금 더 올바른 표현(?)
#include <iostream>
using namespace std;
int main() {
for (int n = 0; n < 4; n++) {
for (int j = 0; j <= n; j++)
cout << "*";
cout << endl;
}
}
오타 또는 잘못된 부분이 있다 판단되시면 댓글 남겨주시면 감사드리겠습니다. ㅎㅎ
오늘 하루도 고생 많으셨습니다.
다음 포스팅 때 뵙겠습니다. ㅎㅎ
감사합니다.
'C, C++ > C++' 카테고리의 다른 글
C++ 클래스를 이용하여 x자 출력하기 (0) | 2020.12.02 |
---|---|
명품 C++ Programming 2판 연습문제 3장 이론문제 개인 풀이 (5) | 2020.10.23 |
명품 C++ Programming 2판 연습문제 2장 실습문제 개인 풀이 (2) | 2020.10.15 |
명품 C++ Programming 연습문제 1장 (실습문제)개인 풀이 및 개인 해설 (0) | 2020.10.13 |
명품 C++ Programming 연습문제 1장 (이론문제) 개인 풀이 및 개인 해설 (2) | 2020.10.11 |