Q1. 다중 if~else문을 사용해서 정수 한 개를 입력받아 양수인지, 음수인지, 0인지 판단하는 프로그램을 작성하시오.
<코드>
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "정수를 입력하시오 -> ";
cin >> i;
if (i > 0){
cout << i << "은 양수이다.\n";
} else if(i == 0) {
cout << i <<"은 0이다.\n";
} else {
cout << i << "은 음수이다.\n";
}
}
<결과>
Q2. 정수 2개를 입력받아 최대값을 구하는 프로그램을 작성하시오.
<코드>
#include <iostream>
using namespace std;
int main()
{
int i1, i2;
cout << "정수를 입력하세요 -> ";
cin >> i1 >> i2;
if(i1 > i2) {
cout << "최대값은 " << i1 << "이다.\n";
} else if (i1 < i2) {
cout << "최대값은 " << i2 << "이다.\n";
} else {
cout << i1 << "와 " << i2 <<"은 같다.\n";
}
}
<결과>
Q3. 다중 if~else문을 사용해서 2차원 공간상의 좌표값이 주어졌을 때 그 좌표가 속하는 사분면을 출력하는 프로그램을 작성하시오.
<코드>
#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "2차원 공간상의 좌표값을 입력 -> ";
cin >> x >> y;
if(x > 0 && y > 0){
cout << "1사분면\n";
} else if(x < 0 && y > 0) {
cout << "2사분면\n";
} else if(x < 0 && y < 0) {
cout << "3사분면\n";
} else {
cout << "4사분면\n";
}
}
<결과>
Q4. 정수 3개를 입력받아 가장 작은 값을 구하는 프로그램을 작성하시오.
<코드>
#include <iostream>
using namespace std;
int main()
{
int i1, i2, i3;
int min;
cout << "세 개의 정수 입력 >>";
cin >> i1 >> i2 >> i3;
if(i1 > i2 && i2 > i3){
min = i3;
} else if (i1 > i2 && i2 < i3){
min = i2;
} else {
min = i1;
}
cout << "가장 작은 값 : " << min << "\n";
}
<결과>
Q5. 문자 하나가 주어졌을 때 그 문자가 알파벳 문자인지 숫자인지 아니면 기타 문자인지를 출력하는 프로그램을 작성하시오. 알파벳이나 숫자를 제외한 나머지 문자들은 모두 기타 문자로 간주한다. (if문 조건식의 and)
<코드>
#include <iostream>
using namespace std;
int main()
{
char chr;
cout << "문자 한개를 입력하세요 -> ";
cin >> chr;
if(chr >= 48 && chr <= 57){
cout << "숫자\n";
} else if(chr >= 65 && chr <= 90){
cout << "대문자 알파벳\n";
} else if(chr >= 97 && chr <= 122){
cout << "소문자 알파벳\n";
} else {
cout << "기타 문자\n";
}
}
<결과>
<해설>
ASCII(아스키) 표를 참고하였다.
Q6. 정수, 연산자(+, -, *, / 중 하나), 정수를 입력받아 해당 연산자에 대한 결과를 구해서 출력하는 프로그램을 if~else문으로 작성하시오. 단, 0으로 나눌 경우 불가능임을 출력한다.
<코드>
#include <iostream>
using namespace std;
int main()
{
float i1, i2, result;
char opr;
cout << "두 정수와 +, -, *, / 중 하나의 연산자를 입력하되\n 정수 연산자 정수 순으로 입력 하세요. (ex. 3 + 4)";
cin >> i1 >> opr >> i2;
if(opr == '+'){
result = i1 + i2;
} else if(opr == '-') {
result = i1 - i2;
} else if(opr == '*') {
result = i1 * i2;
} else if(opr == '/') {
result = i1 / i2;
if(i2 == 0){
cout << "0으로 나눌 수 없습니다." << "\n";
}
}
cout << i1 << opr << i2 << "=" << result;
}
<결과>
<해설>
대입 연산자(=)와 관계 연산자(==)
- 동등 연산자(==) 대신 대입 연산자(=)를 사용하다 보면 원치 않는 결과를 얻을 수 있다.
- opr == '+' 대신 opr = '+'을 기술한다면 모든 opr을 '+'로 보게 된다.
- '='은 대입 연산자이기 때문에 opr이 '+'인지를 검사하는 것이 아니라 변수 opr에 '+'을 대입하기 때문에 첫번째 조건문에서 opr에 +를 대입한 것이 되어 첫번째 조건문에서 true가 된다.
- 그래서 7 * 8을 해도 결과는 7+ 8이 되어 15의 결과가 나오게 된다.
- result = i1 + i2 대신 result == i1 + i2을 기술한다면 0(false)과 1(true)의 결과값만 갖게 된다.
- '=='은 관계 연산자이기 때문에 false인지 true인지 판단한다. result == i1 + i2로 기술하게 된다면 result와 i1 + i2의 값이 같은지를 물어보게 되는 것이고, 당연히 이 둘의 값은 같지 않기 때문에 0(false)를 내뱉게 된다.
- 그래서 7 + 8을 하면 0이 된다.
- 하지만 첫번째 조건문에서만 적용되기 때문에 다른 연산자(다른 opr)에서는 정상적으로 연산이 된다.
Q7. 문자를 입력받아 그 문자를 이니셜로 각 나라 이름을 출력하는 프로그램을 if~else문으로 작성하시오. A 혹은 a이면 American, B 혹은 b이면 Britain, C 혹은 c이면 canada, J 혹은 j이면 Japan, 그 외에는 The Others라고 출력한다. (if문 조건식의 or)
<코드>
#include <iostream>
using namespace std;
int main()
{
char chr;
cout << "문자 한 개를 입력하세요 -> ";
cin >> chr;
if(chr == 'A' || chr == 'a'){
cout << "American";
} else if (chr == 'B' || chr == 'b'){
cout << "Britain";
} else if (chr == 'C' || chr == 'c'){
cout << "Canada";
} else if (chr == 'J' || chr == 'j'){
cout << "Japan";
} else {
cout << "The Others";
}
}
<결과>
'C++ > 문제풀이' 카테고리의 다른 글
[C++] 함수 (2) | 2024.09.30 |
---|---|
[C++] for문, while문 연습문제(2) (0) | 2023.10.20 |
[C++] for문, while문 연습문제(1) (2) | 2023.10.05 |
[C++] 자료형과 연산자 연습문제 (2) | 2023.09.18 |