2-0. 이 장에서 살펴본 프로그램을 컴파일하고 실행해보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
// 표준 라이브러리에서 가져와서 사용할 이름을 언급 | |
using std::cin; | |
using std::endl; | |
using std::cout; | |
using std::string; | |
int main(void) | |
{ | |
// 사용자의 이름을 물음 | |
cout << "Please enter your first name: "; | |
// 이름을 읽음 | |
string name; | |
cin >> name; | |
// 출력하려는 메시지 구성 | |
const string greeting = "Hello, " + name + "!"; | |
// 인사말을 둘러싼 공백의 개수 | |
const int pad = 1; | |
// 출력할 행과 열 개수 | |
const int rows = pad * 2 + 3; | |
const string::size_type cols = greeting.size() + pad * 2 + 2; | |
// 입력 부분과 출력 부분을 구분하려고 한 행을 건너뜀 | |
cout << endl; | |
// rows개 행을 출력합니다 | |
// 불변성: 지금까지 r개 행을 출력 | |
for (int r = 0; r != rows; r++) | |
{ | |
string::size_type c = 0; | |
// 불변성: 현재 행에서 c개 문자를 출력 | |
while (c != cols) | |
{ | |
// 인사말 출력 여부를 판별 | |
if (r == pad + 1 && c == pad + 1) | |
{ | |
cout << greeting; | |
c += greeting.size(); | |
} | |
else | |
{ | |
// 테두리 출력 여부를 판별 | |
if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1) | |
cout << "*"; | |
else | |
cout << " "; | |
++c; | |
} | |
} | |
cout << endl; | |
} | |
return 0; | |
} |

2-1. 이 장에서 소개한 예제 프로그램을 인사말과 테두리를 따로 출력하지 않는 상태로 테두리로 둘러싸인 인사말을 출력하도록 바꿔보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
// 표준 라이브러리에서 가져와서 사용할 이름을 언급 | |
using std::cin; | |
using std::endl; | |
using std::cout; | |
using std::string; | |
int main(void) | |
{ | |
// 사용자의 이름을 물음 | |
cout << "Please enter your first name: "; | |
// 이름을 읽음 | |
string name; | |
cin >> name; | |
// 출력하려는 메시지 구성 | |
const string greeting = "Hello, " + name + "!"; | |
// 인사말을 둘러싼 공백의 개수 | |
const int pad = 1; | |
// 출력할 행과 열 개수 | |
const int rows = pad * 2 + 3; | |
const string::size_type cols = greeting.size() + pad * 2 + 2; | |
// 입력 부분과 출력 부분을 구분하려고 한 행을 건너뜀 | |
cout << endl; | |
string result = ""; // 한 번에 출력할 문자열 | |
// rows개 행을 출력합니다 | |
// 불변성: 지금까지 r개 행을 출력 | |
for (int r = 0; r != rows; r++) | |
{ | |
string::size_type c = 0; | |
// 불변성: 현재 행에서 c개 문자를 출력 | |
while (c != cols) | |
{ | |
// 인사말 출력 여부를 판별 | |
if (r == pad + 1 && c == pad + 1) | |
{ | |
result += greeting; | |
c += greeting.size(); | |
} | |
else | |
{ | |
// 테두리 출력 여부를 판별 | |
if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1) | |
result += "*"; | |
else | |
result += " "; | |
++c; | |
} | |
} | |
result += "\n"; | |
} | |
cout << result << endl; | |
return 0; | |
} |

2-2. 이 장에서 소개한 예제 프로그램에서 테두리로 둘러싸인 인사말을 출려할 때 상하 공백과 좌우 공백의 크기가 다르도록 바꿔보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
// 표준 라이브러리에서 가져와서 사용할 이름을 언급 | |
using std::cin; | |
using std::endl; | |
using std::cout; | |
using std::string; | |
int main(void) | |
{ | |
// 사용자의 이름을 물음 | |
cout << "Please enter your first name: "; | |
// 이름을 읽음 | |
string name; | |
cin >> name; | |
// 출력하려는 메시지 구성 | |
const string greeting = "Hello, " + name + "!"; | |
// 인사말을 둘러싼 공백의 개수 | |
// 좌우 공백 | |
const int xPad = 3; | |
// 상하 공백 | |
const int yPad = 2; | |
// 출력할 행과 열 개수 | |
const int rows = xPad * 2 + 3; | |
const string::size_type cols = greeting.size() + yPad * 2 + 2; | |
// 입력 부분과 출력 부분을 구분하려고 한 행을 건너뜀 | |
cout << endl; | |
// rows개 행을 출력합니다 | |
// 불변성: 지금까지 r개 행을 출력 | |
for (int r = 0; r != rows; r++) | |
{ | |
string::size_type c = 0; | |
// 불변성: 현재 행에서 c개 문자를 출력 | |
while (c != cols) | |
{ | |
// 인사말 출력 여부를 판별 | |
if (r == xPad + 1 && c == yPad + 1) | |
{ | |
cout << greeting; | |
c += greeting.size(); | |
} | |
else | |
{ | |
// 테두리 출력 여부를 판별 | |
if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1) | |
cout << "*"; | |
else | |
cout << " "; | |
++c; | |
} | |
} | |
cout << endl; | |
} | |
return 0; | |
} |

2-3. 이 장에서 소개한 예제 프로그램에서 테두리로 둘러싸인 인사말을 출력할 때 사용자가 테두리와 인사말 사이의 공백을 입력하도록 다시 만들어보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
// 표준 라이브러리에서 가져와서 사용할 이름을 언급 | |
using std::cin; | |
using std::endl; | |
using std::cout; | |
using std::string; | |
int main(void) | |
{ | |
// 사용자의 이름을 물음 | |
cout << "Please enter your first name: "; | |
// 이름을 읽음 | |
string name; | |
cin >> name; | |
// 출력하려는 메시지 구성 | |
const string greeting = "Hello, " + name + "!"; | |
int pad; | |
// 인사말을 둘러싼 공백의 개수 | |
cout << "Please enter the pad size: "; | |
cin >> pad; | |
// 출력할 행과 열 개수 | |
const int rows = pad * 2 + 3; | |
const string::size_type cols = greeting.size() + pad * 2 + 2; | |
// 입력 부분과 출력 부분을 구분하려고 한 행을 건너뜀 | |
cout << endl; | |
// rows개 행을 출력합니다 | |
// 불변성: 지금까지 r개 행을 출력 | |
for (int r = 0; r != rows; r++) | |
{ | |
string::size_type c = 0; | |
// 불변성: 현재 행에서 c개 문자를 출력 | |
while (c != cols) | |
{ | |
// 인사말 출력 여부를 판별 | |
if (r == pad + 1 && c == pad + 1) | |
{ | |
cout << greeting; | |
c += greeting.size(); | |
} | |
else | |
{ | |
// 테두리 출력 여부를 판별 | |
if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1) | |
cout << "*"; | |
else | |
cout << " "; | |
++c; | |
} | |
} | |
cout << endl; | |
} | |
return 0; | |
} |

2-4. 이 장에서 소개한 예제 프로그램은 테두리와 인사말을 구분하는 공백을 한 번에 하나씩 출력합니다. 단일 출력 표현식을 사용하여 필요한 모든 공백을 출력하도록 바꿔보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
// 표준 라이브러리에서 가져와서 사용할 이름을 언급 | |
using std::cin; | |
using std::endl; | |
using std::cout; | |
using std::string; | |
int main(void) | |
{ | |
// 사용자의 이름을 물음 | |
cout << "Please enter your first name: "; | |
// 이름을 읽음 | |
string name; | |
cin >> name; | |
// 출력하려는 메시지 구성 | |
const string greeting = "Hello, " + name + "!"; | |
// 인사말을 둘러싼 공백의 개수 | |
const int pad = 1; | |
// 출력할 행과 열 개수 | |
const int rows = pad * 2 + 3; | |
const string::size_type cols = greeting.size() + pad * 2 + 2; | |
// 단일 출력 표현식으로 공백 | |
const string space = string(greeting.size() + pad * 2, ' '); | |
// 입력 부분과 출력 부분을 구분하려고 한 행을 건너뜀 | |
cout << endl; | |
// rows개 행을 출력합니다 | |
// 불변성: 지금까지 r개 행을 출력 | |
for (int r = 0; r != rows; r++) | |
{ | |
string::size_type c = 0; | |
// 불변성: 현재 행에서 c개 문자를 출력 | |
while (c != cols) | |
{ | |
// 인사말 출력 여부를 판별 | |
if (r == pad + 1 && c == pad + 1) | |
{ | |
cout << greeting; | |
c += greeting.size(); | |
} | |
else | |
{ | |
// 테두리 출력 여부를 판별 | |
if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1) | |
{ | |
cout << "*"; | |
++c; | |
} | |
else if (r == pad + 1) | |
{ | |
cout << " "; | |
++c; | |
} | |
else | |
{ | |
cout << space; | |
c += space.size(); | |
} | |
} | |
} | |
cout << endl; | |
} | |
return 0; | |
} |

2-5. '*' 문자로 정사각형, 직사각형, 삼각형의 형태를 출력해보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
// 표준 라이브러리에서 가져와서 사용할 이름을 언급 | |
using std::cin; | |
using std::endl; | |
using std::cout; | |
using std::string; | |
int main(void) | |
{ | |
int len; | |
cout << "한 변의 길이 입력: "; | |
cin >> len; | |
cout << "정사각형 출력" << endl; | |
for (int i = 0; i < len; i++) | |
{ | |
for (int j = 0; j < len; j++) | |
cout << "*"; | |
cout << endl; | |
} | |
cout << endl; | |
cout << "직사각형 출력" << endl; | |
for (int i = 0; i < len - 1; i++) | |
{ | |
for (int j = 0; j < len; j++) | |
cout << "*"; | |
cout << endl; | |
} | |
cout << endl; | |
cout << "삼각형 출력" << endl; | |
for (int i = 0; i < len; i++) | |
{ | |
for (int j = 0; j <= i; j++) | |
cout << "*"; | |
cout << endl; | |
} | |
return 0; | |
} |

2-7. 10에서 -5까지 카운트다운하는 프로그램을 작성해보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using std::cout; | |
using std::endl; | |
int main(void) | |
{ | |
int num = 10; | |
for (int i = 0; i < 16; i++) | |
{ | |
cout << num << endl; | |
num -= 1; | |
} | |
return 0; | |
} |

2-8. [1, 10) 범위에 있는 숫자들의 곱을 만드는 프로그램을 작성해보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using std::cout; | |
using std::endl; | |
int main(void) | |
{ | |
int result = 1; // 곱하기이기 때문에 1로 초기화 | |
for (int i = 1; i < 10; i++) | |
result *= i; | |
cout << result << endl; | |
return 0; | |
} |

2-9. 사용자가 입력한 2개의 숫자 중 어떤 것이 더 큰지 알려주는 프로그램을 작성해보세요.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using std::cout; | |
using std::endl; | |
using std::cin; | |
int main(void) | |
{ | |
int num1, num2; | |
cout << "첫 번째 숫자를 입력하세요: "; | |
cin >> num1; | |
cout << "두 번째 숫자를 입력하세요: "; | |
cin >> num2; | |
if (num1 > num2) | |
cout << num1 << "가 " << num2 << "보다 큽니다" << endl; | |
else if (num1 < num2) | |
cout << num2 << "가 " << num1 << "보다 큽니다" << endl; | |
else | |
cout << num1 << "과 " << num2 << "는 같은 숫자입니다" << endl; | |
return 0; | |
} |

개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'C++ > Accelerated C++' 카테고리의 다른 글
Accelerated C++ 4장 연습문제 (5) | 2019.10.08 |
---|---|
Accelerated C++ 3장 연습문제 (0) | 2019.10.07 |