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

 

💡 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;
	}
}

 

 

 

반응형
profile

다라다라V

@DaraDaraV

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