1. cout과 << 연산자를 이용하여, 1에서 100까지 정수를 다음과 같이 한 줄에 10개씩 출력하라. 각 정수는 탭으로 분리하여 출력하라.
[결과]
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
for (int i = 0; i <= 100; i++)
{
cout << i << "\t";
if (i % 10 == 0)
cout << endl;
}
}
2. cout과 << 연산자를 이용하여 다음과 같이 구구단을 출력하는 프로그램을 작성하라.
[결과]
![](https://blog.kakaocdn.net/dn/eg3vMG/btrVmgU2NTt/WgrAPc3SLEsF3RqEqLq4qK/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
for (int x = 1; x < 10; x++)
{
for (int y = 1; y < 10; y++)
{
cout << y << " X " << x << " = " << x * y << "\t";
}
cout << endl;
}
}
3. 키보드로부터 두 개의 정수를 읽어 큰 수를 화면에 출력하라.
[결과]
![](https://blog.kakaocdn.net/dn/bUBMoI/btrVnZk855x/zJUWxFaG7usWauVf3KIZXk/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
int a, b;
cout << "두 수를 입력하라 >> ";
cin >> a >> b;
int max = a;
if (a < b)
max = b;
cout << "큰 수 == " << max << endl;
}
4. 소수점을 가지는 5개의 실수를 입력받아 제일 큰 수를 화면에 출력하라.
[결과]
![](https://blog.kakaocdn.net/dn/b0O6eM/btrVk48bvcw/9nc7LQ4IsjMhfkEvOACN31/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
float a, b, c, d, e;
cout << "5개의 실수를 입력하라 >> ";
cin >> a >> b >> c >> d >> e;
float max = a;
if (max < b)
max = b;
if (max < c)
max = c;
if (max < d)
max = d;
if (max < e)
max = e;
cout << "가장 큰 수는 >> " << max;
}
5. <Enter> 키가 입력될 때까지 문자들을 읽고, 입력된 문자 'x'의 개수를 화면에 출력하라.
[결과]
![](https://blog.kakaocdn.net/dn/bcG3VW/btrVpYZVsvA/OObSumFVkuXPcSByNDFh8k/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
cout << "문자들을 입력하라. >> ";
char inputString[100];
cin.getline(inputString, 100, '\n');
int count = 0;
for (int i = 0; i < 100; i++)
{
if (inputString[i] == 'x')
count++;
}
cout << "x의 개수는 " << count;
}
6. 문자열을 두 개 입력받고, 두 개의 문자열이 같은지 검사하는 프로그램을 작성하라. 만일 같으면 "같습니다", 아니면 "같지 않습니다"를 출력하라.
[결과]
![](https://blog.kakaocdn.net/dn/bfx5KL/btrVo5elOmS/rVTUen4HDK4A5e6YbL1JD1/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
char firstPass[30], secondPass[30];
cout << "새 암호를 입력하세요 >> ";
cin >> firstPass;
cout << "새 암호를 다시 한 번 입력하세요. >> ";
cin >> secondPass;
if (strcmp(firstPass, secondPass) == 0)
cout << "같습니다.";
else
cout << "같지 않습니다.";
}
7. 다음과 같이 "yes"가 입력될 때까지 종료를 하지 않는 프로그램을 작성하여라. 사용자로부터의 입력은 cin.getline() 함수를 사용한다.
[결과]
![](https://blog.kakaocdn.net/dn/baFtaf/btrVjQo4Bjt/otQ7C53JsZIKeejCjrWRc0/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
while (true)
{
cout << "종료하고싶으면 yes를 입력하세요. >> ";
char inputYes[100];
cin.getline(inputYes, 100);
if (strcmp(inputYes, "yes") == 0)
{
cout << "종료합니다...";
break;
}
}
}
8. 한 라인에 ';'으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.
[결과]
![](https://blog.kakaocdn.net/dn/leRve/btrVoHEAVPM/q0G3kxh62Df3pgZs1s3JHk/img.png)
[소스 코드]
#include <iostream>
#include <string>
using namespace std;
int main()
{
string longest;
char name[100];
int max = 0;
cout << "5명의 이름을 ';'로 구분하여 입력하세요. " << endl << ">> ";
for (int i = 0; i < 5; i++)
{
cin.getline(name, 100, ';');
cout << (i + 1) << ":" << name << endl;
if (max < strlen(name))
{
max = strlen(name);
longest = name;
}
}
cout << "가장 긴 이름은 " << longest << endl;
}
9. 이름, 주소, 나이를 입력받아 다시 출력하는 프로그램을 작성하여라. 실행 예시는 다음과 같다.
[결과]
![](https://blog.kakaocdn.net/dn/d6joid/btrVpt0cBpV/XPkkdUAqTaDrEbI3dBGRYK/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
cout << "이름은? : ";
char name[10];
cin.getline(name, 10);
cout << "주소는? : ";
char address[100];
cin.getline(address, 100);
cout << "나이는? : ";
int age;
cin >> age;
cout << name << ", " << address << ", " << age << "세";
}
10. 문자열을 하나 입력받고 문자열의 부분 문자열을 다음과 같이 출력하는 프로그램을 작성하라.
[결과]
![](https://blog.kakaocdn.net/dn/cYNSju/btrVqgTJDSt/MF32d3UkKRoEA6Ep7MbE41/img.png)
[소스 코드]
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "문자열 입력 >> ";
string inputString;
cin >> inputString;
int count = 1;
int i = 0;
while (true)
{
if (count == i)
{
++count;
cout << endl;
i = 0;
}
if (count == inputString.length() + 1)
break;
cout << inputString[i];
++i;
}
}
11. 다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라.
[결과]
![](https://blog.kakaocdn.net/dn/dVQeOV/btrVjNMNLJv/dFvlUPFGiK9ACTQigjzU11/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
int k, n = 0, sum = 0;
cout << "끝 수를 입력하세요. >> ";
cin >> n;
for (k = 1; k <= n; k++)
sum += k;
cout << "1에서 " << n << "까지의 합은 " << sum << "입니다." << endl;
}
12. 다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하여라. 이 프로그램의 실행 결과는 연습문제 11과 같다.
[결과]
![](https://blog.kakaocdn.net/dn/Sk2YE/btrVjiMYhRU/Tlkwxp1k8jPGz30yIbSRC0/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int sum(int a, int b);
int main()
{
cout << "12번 문제 결과입니다. " << endl;
int n = 0;
cout << "끝 수를 입력하세요 >> ";
cin >> n;
cout << "1에서 " << n << "까지의 합은 " << sum(1, n) << "입니다. " << endl;
}
int sum(int a, int b)
{
int k, res = 0;
for (k = a; k <= b; k++)
res += k;
return res;
}
13. 중식당의 주문 과정을 C++ 프로그램으로 작성해 보자. 다음 실행 결과와 같이 메뉴와 사람 수를 입력받고 이를 출력하면 된다. 잘못된 입력을 가려내는 부분도 코드에 추가하라.
[결과]
![](https://blog.kakaocdn.net/dn/dBWU4z/btrVk50gvPW/mnDmdBr3l2KgykwStwYrWK/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
cout << "***** 승리짜장에 오신 것을 환영합니다. *****" << endl;
int choice, person;
while (true)
{
cout << "짬뽕 : 1, 짜장 : 2, 군만두 : 3, 종료 : 4 >> ";
cin >> choice;
if (choice == 1)
{
cout << "몇 인분? > ";
cin >> person;
cout << "짬뽕 " << person << "인분 나왔습니다." << endl;
}
else if (choice == 2)
{
cout << "몇 인분? > ";
cin >> person;
cout << "짜장 " << person << "인분 나왔습니다." << endl;
}
else if (choice == 3)
{
cout << "몇 인분? > ";
cin >> person;
cout << "군만두 " << person << "인분 나왔습니다." << endl;
}
else if (choice == 4)
{
cout << "오늘은 영업이 끝났습니다. " << endl;
break;
}
else
cout << "다시 주문하세요!!" << endl;
}
}
14. 커피를 주문하는 간단한 C++ 프로그램을 작성해 보자. 거피 종류는 "에스프레소", "아메리카노", 카푸치노"의 3가지이며 가격은 각각 2000원, 2300원, 2500원이다. 하루에 20000원 이상 벌게 되면 카페를 닫는다. 실행 결과와 같이 작동하는 프로그램을 작성해라.
[결과]
![](https://blog.kakaocdn.net/dn/mqkvO/btrVqglTnMK/p6vB5V180bCZhyL8bmUuKk/img.png)
[소스 코드]
#include <iostream>
using namespace std;
int main()
{
cout << "에스프레소 2000원, 아메리카노 2300원, 카푸치노 2500원입니다." << endl;
string order;
int amount = 0, price = 0;
int total = 0;
while (true)
{
if (total >= 20000)
{
cout << "오늘 " << total << "원을 판매하여 카페를 닫습니다. 내일 봐요~" << endl;
break;
}
cout << "주문 >> ";
cin >> order >> amount; //switch 문 사용도 적합. 또한 string 외에 strcmp()으로 대체 가능.
if (order == "에스프레소")
{
price = 2000 * amount;
total += price;
}
else if (order == "아메리카노")
{
price = 2300 * amount;
total += price;
}
else if (order == "카푸치노")
{
price = 2500 * amount;
total += price;
}
cout << price << "원입니다. 맛있게 드세요~ " << endl;
}
}
15. 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)의 정수 5칙 연산을 할 수 있는 프로그램을 작성하라. 식은 다음과 같은 형식으로 입력된다. 정수와 연산자는 하나의 빈칸으로 분리된다.
[예시]
? 2 + 34
2 + 34 = 36
? -1 - 36
-1 - 36 = -37
...
[결과]
![](https://blog.kakaocdn.net/dn/NwS4c/btrVjPp8Rl0/ZfRSmDhB7o0zs58oM3a4PK/img.png)
[소스 코드]
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a, b;
char op;
while (true)
{
cout << "? ";
cin >> a >> op >> b;
switch(op)
{
case '+':
cout << a << " " << op << " " << b << " = " << a + b << endl;
break;
case '-':
cout << a << " " << op << " " << b << " = " << a - b << endl;
break;
case '*':
cout << a << " " << op << " " << b << " = " << a * b << endl;
break;
case '%':
cout << a << " " << op << " " << b << " = " << a % b << endl;
break;
case '/':
cout << a << " " << op << " " << b << " = " << a / b << endl;
break;
}
}
}
16. 영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 짐계하며, 텍스트 입력의 끝은 ';'문자로 한다.
[결과]
![](https://blog.kakaocdn.net/dn/3VBBQ/btrVoGZZHG0/eCxf4xeTJ680DWcmpACop0/img.png)
[소스 코드]
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "영문 텍스트를 입력하세요. 히스토그램을 그립니다. " << endl << "텍스트의 끝은 ; 입니다. 10000개까지 가능합니다. " << endl;
char TEXT[10000];
cin.getline(TEXT, 10000, ';');
int totalCount = 0;
int totalLength = strlen(TEXT);
char text;
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j= 0, k= 0, l = 0, m = 0,
n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0;
for (int num = 0; num < totalLength; num++)
{
text = TEXT[num];
if (isalpha(text))
{
switch (tolower(text))
{
case 'a':
a++;
totalCount++;
break;
case 'b':
b++;
totalCount++;
break;
case 'c':
c++;
totalCount++;
break;
case 'd':
d++;
totalCount++;
break;
case 'e':
e++;
totalCount++;
break;
case 'f':
f++;
totalCount++;
break;
case 'g':
g++;
totalCount++;
break;
case 'h':
h++;
totalCount++;
break;
case 'i':
i++;
totalCount++;
break;
case 'j':
j++;
totalCount++;
break;
case 'k':
k++;
totalCount++;
break;
case 'l':
l++;
totalCount++;
break;
case 'm':
m++;
totalCount++;
break;
case 'n':
n++;
totalCount++;
break;
case 'o':
o++;
totalCount++;
break;
case 'p':
p++;
totalCount++;
break;
case 'q':
q++;
totalCount++;
break;
case 'r':
r++;
totalCount++;
break;
case 's':
s++;
totalCount++;
break;
case 't':
t++;
totalCount++;
break;
case 'u':
u++;
totalCount++;
break;
case 'v':
v++;
totalCount++;
break;
case 'w':
w++;
totalCount++;
break;
case 'x':
x++;
totalCount++;
break;
case 'y':
y++;
totalCount++;
break;
case 'z':
z++;
totalCount++;
break;
}
}
}
cout << "총 알파벳 수 " << totalCount << endl;
//a
cout << "a (" << a << ") :";
for (int i = 0; i < a; i++)
cout << "*";
cout << endl;
//b
cout << "b (" << b << ") :";
for (int i = 0; i < b; i++)
cout << "*";
cout << endl;
//c
cout << "c (" << c << ") :";
for (int i = 0; i < c; i++)
cout << "*";
cout << endl;
//d
cout << "d (" << d << ") :";
for (int i = 0; i < d; i++)
cout << "*";
cout << endl;
//e
cout << "e (" << e << ") :";
for (int i = 0; i < e; i++)
cout << "*";
cout << endl;
//f
cout << "f (" << f << ") :";
for (int i = 0; i < f; i++)
cout << "*";
cout << endl;
//g
cout << "g (" << g << ") :";
for (int i = 0; i < g; i++)
cout << "*";
cout << endl;
//h
cout << "h (" << h << ") :";
for (int i = 0; i < h; i++)
cout << "*";
cout << endl;
//i
cout << "i (" << i << ") :";
for (int I = 0; I < i; I++)
cout << "*";
cout << endl;
//j
cout << "j (" << j << ") :";
for (int i = 0; i < j; i++)
cout << "*";
cout << endl;
//k
cout << "k (" << k << ") :";
for (int i = 0; i < k; i++)
cout << "*";
cout << endl;
//l
cout << "l (" << l << ") :";
for (int i = 0; i < l; i++)
cout << "*";
cout << endl;
//m
cout << "m (" << m << ") :";
for (int i = 0; i < m; i++)
cout << "*";
cout << endl;
//n
cout << "n (" << n << ") :";
for (int i = 0; i < n; i++)
cout << "*";
cout << endl;
//o
cout << "o (" << o << ") :";
for (int i = 0; i < o; i++)
cout << "*";
cout << endl;
//p
cout << "p (" << p << ") :";
for (int i = 0; i < p; i++)
cout << "*";
cout << endl;
//q
cout << "q (" << q << ") :";
for (int i = 0; i < q; i++)
cout << "*";
cout << endl;
//r
cout << "r (" << r << ") :";
for (int i = 0; i < r; i++)
cout << "*";
cout << endl;
//s
cout << "s (" << s << ") :";
for (int i = 0; i < s; i++)
cout << "*";
cout << endl;
//t
cout << "t (" << t << ") :";
for (int i = 0; i < t; i++)
cout << "*";
cout << endl;
//u
cout << "u (" << u << ") :";
for (int i = 0; i < u; i++)
cout << "*";
cout << endl;
//v
cout << "v (" << v << ") :";
for (int i = 0; i < v; i++)
cout << "*";
cout << endl;
//w
cout << "w (" << w << ") :";
for (int i = 0; i < w; i++)
cout << "*";
cout << endl;
//x
cout << "x (" << x << ") :";
for (int i = 0; i < x; i++)
cout << "*";
cout << endl;
//y
cout << "y (" << y << ") :";
for (int i = 0; i < y; i++)
cout << "*";
cout << endl;
//z
cout << "z (" << z << ") :";
for (int i = 0; i < z; i++)
cout << "*";
cout << endl;
}
책에서 나오는 힌트나 조건들의 일부는 저작자 존중을 위해 일부러 작성하지 않았습니다.
개인 공부용으로 올리는 만큼 풀이에 대한 지적 감사하겠습니다.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif)
'C-C++ > 명품 C++ Programming' 카테고리의 다른 글
[(개정판) 명품 C++ programming] 7장 실습 문제 (0) | 2023.01.06 |
---|---|
[(개정판) 명품 C++ programming] 6장 실습 문제 (0) | 2023.01.06 |
[(개정판) 명품 C++ programming] 5장 실습 문제 (0) | 2023.01.06 |
[(개정판) 명품 C++ programming] 4장 실습 문제 (2) | 2023.01.05 |
[(개정판) 명품 C++ programming] 3장 실습 문제 (0) | 2023.01.05 |