본 글은 "황기태"님의 [명품 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.
cout 과 << 연산자를 이용하여, 1에서 100까지 정수를 다음과 같이 한 줄에 10개씩 출력하라. 각 정수는 탭으로 분리하여 출력하라.
[정답]
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
cout << (10 * i + j + 1) << "\t";
}
cout << endl;
}
return 0;
}
💡 02.
cout 과 << 연산자를 이용하여 다음과 같이 구구단을 출력하는 프로그램을 작성하라.
[정답]
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++)
cout << j << "x" << i << "=" << j * i << "\t";
cout << endl;
}
return 0;
}
💡 03.
키보드로부터 두 개의 정수를 읽어 큰 수를 화면에 출력하라.
[정답]
#include <iostream>
using namespace std;
int main() {
// 두 수를 입력받음
cout << "두 수를 입력하라>>";
int n, m;
cin >> n >> m;
// 큰 수를 비교하여 입력받음
int big;
if (n >= m) big = n;
else big = m;
// 큰 수를 출력함
cout << "큰 수 = " << big;
return 0;
}
💡 04.
소수점을 가지는 5개의 실수를 입력받아 제일 큰 수를 화면에 출력하라.
[정답]
// 배열을 사용하지 않는 경우
#include <iostream>
using namespace std;
int main() {
// 실수 입력받기
cout << "5개의 실수를 입력하라>>";
double n1, n2, n3, n4, n5;
cin >> n1 >> n2 >> n3 >> n4 >> n5;
// 크기 비교하기
double big = n1;
if (n2 > big) big = n2;
if (n3 > big) big = n3;
if (n4 > big) big = n4;
if (n5 > big) big = n5;
// 가장 큰 수 출력
cout << "제일 큰 수 = " << big;
return 0;
}
#include <iostream>
using namespace std;
int main() {
// 실수 입력 받으면서 크기비교
cout << "5개의 실수를 입력하라>>";
double num[5], big;
cin >> num[0];
big = num[0];
for (int i = 1; i < 5; i++) {
cin >> num[i];
if (num[i] > big) big = num[i];
}
cout << "제일 큰 수 = " << big;
return 0;
}
💡 05.
<Enter> 키가 입력될 때까지 문자들을 읽고, 입력된 문자 'x'의 개수를 화면에 출력하라.
[정답]
#include <iostream>
using namespace std;
int main() {
// cin.getline() 이용하기 위한 문자 배열
char str[100];
cout << "문자들을 입력하라(100개 미만)." << endl;
cin.getline(str, 100);
// x 개수 세기
int counter = 0;
for (int i = 0; i <= sizeof(str); i++) {
if (str[i] == 'x')
counter++;
}
cout << "x의 개수는 " << counter;
return 0;
}
💡 06.
문자열을 두 개 입력받고 두 개의 문자열이 같은지 검사하는 프로그램을 작성하라. 만일 같으면 "같습니다", 아니면 "같지 않습니다"를 출력하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
// 암호문 입력받기
string passWord, passCheck;
cout << "새 암호를 입력하세요>>";
getline(cin, passWord);
cout << "새 암호를 다시 한 번 입력하세요>>";
getline(cin, passCheck);
// 두 문자열 비교하기
if (passWord == passCheck) cout << "같습니다.";
else cout << "같지 않습니다.";
return 0;
}
💡 07.
다음과 같이 "yes"가 입력될 때까지 종료하지 않는 프로그램을 작성하라. 사용자로부터의 입력은 cin.getline() 함수를 사용하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
string quit = "";
// yes가 입력될 때까지 실행
while (quit != "yes") {
cout << "종료하고 싶으시면 yes를 입력하세요>>";
getline(cin, quit);
}
cout << "종료합니다...";
}
💡 08.
한 라인에 ' ; '으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
char name[100];
int maxLength = 0;
string maxName;
cout << "5명의 이름을 ';'으로 구분하여 입력하세요\n>>";
for (int i = 0; i < 5; i++) {
// 각 문자열을 입력받고 출력하기
cin.getline(name, 100, ';');
cout << (i + 1) << " : ";
cout << name << "\n";
// 가장 긴 문자열 기억하기
if (strlen(name) > maxLength) {
maxName = name;
maxLength = strlen(name);
}
}
cout << "가장 긴 이름은 " << maxName;
}
💡 09.
이름, 주소, 나이를 입력받아 다시 출력하는 프로그램을 작성하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
string name, address, age;
cout << "이름은?";
getline(cin, name);
cout << "주소는?";
getline(cin, address);
cout << "나이는?";
cin >> age;
cout << name << ", " << address << ", " << age << "세" << endl;
}
💡 10.
문자열을 하나 입력받고 문자열 부분 문자열을 다음과 같이 출력하는 프로그램을 작성하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
cout << "문자열 입력>>";
cin >> input;
// string 객체에서 각 글자 빼오기
for (int i = 1; i < input.length() + 1; i++) {
for (int j = 0; j < i; j++) {
cout << input[j];
}
cout << "\n";
}
}
💡 11.
다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라.
#include<stdio.h>
int main()
{
int k, n = 0;
int sum = 0;
printf("끝수를 입력하세요>>");
scanf("%d", &n);
for (k = 0; k <= n; k++)
{
sum += k;
}
printf("1에서 %d까지의 합은 %d 입니다.\n", n, sum);
return 0;
}
[정답]
#include <iostream>
using namespace std;
int main() {
int k, n = 0, sum = 0;
// C언어와 다른 부분
cout << "끝 수를 입력하세요>>";
cin >> n;
for (k = 1; k <= n; k++) {
sum += k;
}
cout << "1부터 " << n << "까지의 합은 " << sum << "입니다.";
return 0;
}
💡 12.
다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라. 실행결과는 11번 문제와 같다.
#include<stdio.h>
int sum(); // 함수 원형 선언
int sum(int a, int b)
{
int k, res = 0;
for (k = a; k <= b; k++)
{
res += k;
}
return res;
}
int main()
{
int n = 0;
printf("끝수를 입력하세요>>");
scanf("%d", &n);
printf("1에서 %d까지의 합은 %d 입니다.\n", n, sum(1,n));
return 0;
}
[정답]
#include <iostream>
using namespace std;
//함수 선언
int sum(int a, int b);
int main() {
int n = 0;
cout << "끝 수를 입력하세요>>";
cin >> n;
cout << "1에서 " << n << "까지의 합은 " << sum(1, n) << "입니다.\n";
return 0;
}
// 함수 구현
int sum(int a, int b) {
int k, res = 0;
for (k = a; k <= b; k++) {
res += k;
}
return res;
}
💡 13.
중식당의 주문 과정을 C++ 프로그램으로 작성해보자. 다음 실행 결과와 같이 메뉴와 사람 수를 입력받고 이를 출력하면 된다. 잘못된 입력을 가려내는 부분도 코드에 추가하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "***** 승리장에 오신 것을 환영합니다. *****\n";
int n = 0;
while (n != 4) {
cout << "짬뽕:1, 짜장:2, 군만두:3, 종료:4>> ";
cin >> n;
switch (n)
{
int howMany;
case 1:
cout << "몇인분?";
cin >> howMany;
cout << "짬뽕 " << howMany << "인분 나왔습니다.\n";
break;
case 2:
cout << "몇인분?";
cin >> howMany;
cout << "짜장 " << howMany << "인분 나왔습니다.\n";
break;
case 3:
cout << "몇인분?";
cin >> howMany;
cout << "군만두 " << howMany << "인분 나왔습니다.\n";
break;
case 4:
cout << "오늘 영업은 끝났습니다.\n";
break;
default:
cout << "다시 주문하세요!!.\n";
break;
}
}
}
💡 14.
커피를 주문하는 간단한 C++ 프로그램을 작성해보자. 커피 종류는 "에스프레소", "아메리카노", "카푸치노"의 3가지이며 가격은 각각 2000원, 2300원, 2500원이다. 하루에 20000원 이상 벌게 되면 카페를 닫는다. 실행결과와 같이 작동하는 프로그램을 작성하라.
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
string order;
int num, earnMoney = 0;
cout << "에스프레소 2000원, 아케리카노 2300원, 카푸치노 2500원입니다.\n";
// switch 문으로도 구현이 가능합니다.
while (earnMoney <= 20000) {
cout << "주문>> ";
cin >> order >> num;
int tmpMoney;
if (order == "에스프레소") {
tmpMoney = 2000 * num;
}
else if (order == "아메리카노") {
tmpMoney = 2300 * num;
}
else if (order == "카푸치노") {
tmpMoney = 2500 * num;
}
earnMoney += tmpMoney;
cout << tmpMoney << "원입니다. 맛있게 드세요\n";
}
cout << "오늘 " << earnMoney << "원을 판매하여 카페를 닫습니다. 내일 봐요~~~\n";
}
💡 15.
덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)의 정수 5칙 연산을 할 수 있는 프로그램을 작성하라. 식은 다음과 같은 형식으로 입력된다. 정수와 연산자는 하나의 빈칸으로 분리된다.
[정답]
#include <iostream>
using namespace std;
int main() {
int operand1, operand2;
char operator1;
while (true) {
cout << "? ";
cin >> operand1 >> operator1 >> operand2;
int result;
// switch 문을 배우지 않은 경우 if else문으로도 작성 가능
switch (operator1) {
case '+':
result = operand1 + operand2;
case '-':
result = operand1 - operand2;
case '*':
result = operand1 * operand2;
case '/':
result = operand1 / operand2;
case '%':
result = operand1 % operand2;
}
cout << operand1 << operator1 << operand2 << "=" << result << "\n";
}
}
💡 16.
영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 집계하며, 텍스트 입력의 끝은 ' ; ' 문자로 한다.
Wise men say, only fools rush in
But I can't help, falling in love with you
Shall I stay? Would it be a sin?
If I can't help, falling in love with you
Like a river flows, surely to the sea
Darling so it goes, some things aren't meant to be ;
[정답]
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "영문 텍스트를 입력하세요. 히스토그램을 그립니다. \n";
cout << "텍스트의 끝은 ; 입니다. 10000개까지 가능합니다. \n";
int count, total = 0;
char input[10000];
cin.getline(input, 10000, ';');
// 총 문자 개수 출력
for (int i = 0; i <= strlen(input); i++) {
if (isalpha(input[i]) != 0) {
input[i] = tolower(input[i]);
total++;
}
}
cout << "총 알파벳 수 " << total << "\n\n";
// 히스토그램 출력
for (char c = 'a'; c <= 'z'; c++) {
count = 0;
for (int j = 0; j <= strlen(input); j++) {
if (input[j] == c) {
count++;
}
}
cout << c << " (" << count << ")\t: ";
for (int k = 0; k < count; k++) {
cout << "*";
}
cout << endl;
}
}
'대학교 > 명품 C++programming 문제' 카테고리의 다른 글
[C++] 명품 C++ Programming 4장 연습 문제 풀이 (이론 문제) (0) | 2022.11.10 |
---|---|
[C++] 명품 C++ Programming 3장 연습 문제 풀이 (이론 문제) (0) | 2022.10.29 |
[C++] 명품 C++ Programming 2장 연습 문제 풀이 (이론 문제) (0) | 2022.10.27 |
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (실습 문제) (0) | 2022.10.25 |
[C++] 명품 C++ Programming 1장 연습 문제 풀이 (이론 문제) (1) | 2022.10.23 |