다라다라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장 연습 문제 풀이 (이론 문제)

 

1. 💡 01.

cout  << 연산자를 이용하여, 1에서 100까지 정수를 다음과 같이 한 줄에 10개씩 출력하라. 각 정수는 탭으로 분리하여 출력하라.

 

[정답]

<cpp />
#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; }

 

 

 

 

2. 💡 02.

cout  << 연산자를 이용하여 다음과 같이 구구단을 출력하는 프로그램을 작성하라.

 

[정답]

<cpp />
#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; }

 

 

 

 

 

3. 💡 03.

키보드로부터 두 개의 정수를 읽어 큰 수를 화면에 출력하라.

 

[정답]

<cpp />
#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; }

 

 

 

 

 

4. 💡 04.

소수점을 가지는 5개의 실수를 입력받아 제일 큰 수를 화면에 출력하라.

 

[정답]

<cpp />
// 배열을 사용하지 않는 경우 #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; }

 

 

<cpp />
#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; }

 

 

 

 

5. 💡 05.

<Enter> 키가 입력될 때까지 문자들을 읽고, 입력된 문자 'x'의 개수를 화면에 출력하라. 

 

[정답]

<cpp />
#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; }

 

 

 

 

6. 💡 06.

문자열을 두 개 입력받고 두 개의 문자열이 같은지 검사하는 프로그램을 작성하라. 만일 같으면 "같습니다", 아니면 "같지 않습니다"를 출력하라.

 

[정답]

<cpp />
#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; }

 

 

 

 

7. 💡 07.

다음과 같이 "yes"가 입력될 때까지 종료하지 않는 프로그램을 작성하라. 사용자로부터의 입력은 cin.getline() 함수를 사용하라. 

 

[정답]

<cpp />
#include <iostream> #include <string> using namespace std; int main() { string quit = ""; // yes가 입력될 때까지 실행 while (quit != "yes") { cout << "종료하고 싶으시면 yes를 입력하세요>>"; getline(cin, quit); } cout << "종료합니다..."; }

 

 

 

 

8. 💡 08.

한 라인에 ' ; '으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.

 

[정답]

<cpp />
#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; }

 

 

 

 

9. 💡 09.

이름, 주소, 나이를 입력받아 다시 출력하는 프로그램을 작성하라.

 

[정답]

<cpp />
#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. 💡 10.

문자열을 하나 입력받고 문자열 부분 문자열을 다음과 같이 출력하는 프로그램을 작성하라. 

 

[정답]

<cpp />
#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. 💡 11.

다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라.

<csharp />
#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; }

 

[정답]

<csharp />
#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. 💡 12.

다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라. 실행결과는 11번 문제와 같다.

<csharp />
#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; }

 

[정답]

<csharp />
#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. 💡 13.

중식당의 주문 과정을 C++ 프로그램으로 작성해보자. 다음 실행 결과와 같이 메뉴와 사람 수를 입력받고 이를 출력하면 된다. 잘못된 입력을 가려내는 부분도 코드에 추가하라.

 

실행결과

 

[정답]

<java />
#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. 💡 14.

커피를 주문하는 간단한 C++ 프로그램을 작성해보자. 커피 종류는 "에스프레소", "아메리카노", "카푸치노"의 3가지이며 가격은 각각 2000원, 2300원, 2500원이다. 하루에 20000원 이상 벌게 되면 카페를 닫는다. 실행결과와 같이 작동하는 프로그램을 작성하라.

 

실행결과

 

[정답]

<csharp />
#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. 💡 15.

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)의 정수 5칙 연산을 할 수 있는 프로그램을 작성하라. 식은 다음과 같은 형식으로 입력된다. 정수와 연산자는 하나의 빈칸으로 분리된다. 

 

 

[정답]

<csharp />
#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. 💡 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 ;

 

 

 

[정답]

<csharp />
#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; } }

 

 

 

반응형
profile

다라다라V

@DaraDaraV

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