and 기호, or 기호, and&or 혼합
and 기호
2개 이상의 조건을 동시에 만족하는지를 알고싶은 경우라면, 다음과 같이 && (and) 를 사용하면 된다
if (조건1 && 조건2) {
코드1
}
3개의 조건을 모두 만족시키는지에 대한 여부 역시 and를 2번 사용하여 표현할 수 있다. 조건이 더 많아도 된다.
if (조건1 && 조건2 && 조건3) {
코드1
}
점수 비교
A와 B의 수학과 영어의 점수를 입력받아 누가 더 높은지 비교하는 프로그램을 작성해주세요.
#include <iostream>
using namespace std;
int main(){
int a1,a2,b1,b2;
cin >> a1 >> a2 >> b1 >> b2;
if ((a1 > b1) && (a2 > b2)) cout << 1;
else cout << 0;
return 0;
}
범위 내 숫자인지 판별
숫자 a가 2 이상 10 이하 라는 조건은 어떻게 넣을 수 있을까?
2개 이상의 조건을 동시에 만족하는지를 알고 싶은 경우이므로 &&
(and) 를 사용해볼 수 있다.
if (2 <= a && a <= 10) {
코드1
}
범위 안의 수
정수 a를 입력 받아 a가 10이상 20 이하인 수인지를 판단하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int a;
cin >> a;
if (10 <= a && a <= 20) cout<<"yes";
else cout<<"no";
return 0;
}
시력검사
양쪽눈의 시력을 실수(real number)로 입력받아 모두 1.0 이상이면 High, 모두 0.5 이상이면 Middle, 아니면 Low라고 출력하는 프로그램을 작성해주세요.
#include <iostream>
using namespace std;
int main(){
double n,m;
cin >> n >> m;
if (n >= 1.0 and m >= 1.0) cout<<"High";
else if(n >= 0.5 && m >= 0.5) cout<<"Middle";
else cout<<"Low";
return 0;
}
특정 조건 세 정수 비교
3개의 정수를 입력 받아 첫 번째 수가 가장 작으면 1 아니면 0을 출력하고, 세 개의 수가 모두 같으면 1 아니면 0 을 출력하는 프로그램을 작성해주세요.
#include <iostream>
using namespace std;
int main(){
double a,b, c;
cin >> a >> b >> c;
cout << ((a<=b && a<=c) ? "1 ": "0 ");
cout << ((a == b && b == c) ? 1 : 0);
return 0;
}
가장 작다는 의미가 최솟값인지 여부기 때문에 같다를 붙여야 한다.
세 정수의 최솟값
3개의 정수를 입력받아 조건연산자를 이용하여 입력받은 수 중 최솟값을 출력하는 프로그램을 작성해주세요.
#include <iostream>
using namespace std;
int main(){
int a, b, c, tmp;
cin >> a >> b >> c;
tmp = (a < b)? a : b;
cout << (c < tmp ? c: tmp);
return 0;
}
세 수의 중간값
세 수 a, b, c의 값이 주어졌을 때, b가 a보다 크고 c보다 작다면 1을, 그렇지 않다면 0을 출력하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int a, b, c;
cin >> a >> b >> c;
if (a < b && b < c) cout<<1;
else cout<<0;
return 0;
}
or 기호
2개 이상의 조건들 중 하나라도 만족하는지를 알고싶은 경우라면, 다음과 같이 ||
(or) 를 사용하면 된다.
if ( 조건1 || 조건2 ) {
코드1
}
3개의 조건 중 하나라도 만족하는지에 대한 여부 역시 ||
를 2번 사용하여 표현할 수 있다. 조건이 더 많아도 된다.
if ( 조건1 || 조건2 || 조건3 ) {
코드1
}
범위 밖의 수
정수 a를 입력받아 a가 10보다 작거나 20보다 큰 수인지를 판단하는 프로그램을 작성해보세요.
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
if(a<10 || a>20) cout<<"yes";
else cout<<"no";
return 0;
}
숫자의 조건 여부 3
정수 a를 입력받았을 때 13의 배수이거나 19의 배수인 경우는 True, 그 외의 경우는 False를 출력하는 프로그램을 작성해주세요.
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
if(a%13 == 0 || a%19 == 0) cout<<"True";
else cout<<"False";
return 0;
}
둘 중 하나의 배수
정수 a가 주어졌을 때, a가 3의 배수이거나 5의 배수인 경우에는 1을, 그렇지 않다면 0을 출력하는 프로그램을 작성해보세요.
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
if(a%3 == 0 || a%5 == 0) cout << 1;
else cout << 0;
return 0;
}
and, or 혼합
숫자 a가 짝수거나 혹은 홀수이면서 동시에 10보다 크다
면 이라는 조건은 어떻게 넣을 수 있을까?
1. a % 2 == 0
2. a % 2 == 1 && a >= 10
if ( a % 2 == 0 || (a % 2 == 1 && a >= 10) ) {
코드1
}
and, or 연산자 우선순위
if (a % 2 == 0 || a % 5 == 0 && a % 7 == 0) {
코드1
}
and는 or 보다 연산자 우선순위가 높기 때문에, 먼저 식을 계산하게 된다.
굉장한 숫자
자연수 n을 입력받아 n이 굉장한 숫자인지 판단하는 프로그램을 작성해보세요.
굉장한 숫자이기 위해서는 다음 두 조건 중 하나를 만족해야 합니다.
- 홀수이면서 3의 배수인 수
- 짝수이면서 5의 배수인 수
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
if(n%2==1 && n%3 == 0||n%2==0 && n%5==0) cout<<"true";
else cout<<"false";
return 0;
}
if 조건 나열 순서의 중요성
- a가 홀수면서 5보다 작으면 A를 출력합니다.
- a가 홀수면서 5보다 같거나 크면 B를 출력합니다.
- a가 짝수면 C를 출력합니다.
이 문제를 주어진 순서 그대로 코드를 작성해보면 다음과 같다.
if (a % 2 == 1 && a < 5) {
cout << "A" << endl;
}
if (a % 2 == 1 && a >= 5) {
cout << "B" << endl;
}
if (a % 2 == 0) {
cout << "C" << endl;
}
하지만 조건을 3, 1, 2 순으로 처리한다 생각하면 다음과 같이 코드를 간결하고 깔끔하게 작성할 수 있다.
if (a % 2 == 0) {
cout << "C" << endl;
}
else if (a < 5) {
cout << "A" << endl;
}
else {
cout << "B" << endl;
}
이렇듯 조건을 어떤 순서로 나열하는지에 따라 코드의 복잡도가 달라진다.
숫자의 계절은
몇 월인지를 입력받아, 어떤 계절인지를 출력하는 프로그램을 작성해보세요.
35월이 봄, 68월이 여름, 911월이 가을, 122월이 겨울이라 가정합니다.
#include<iostream>
using namespace std;
int main(){
int m;
cin >> m;
if(3<=m && m<6) cout<<"Spring";
else if(6<=m && m<9) cout<<"Summer";
else if(9<=m && m<12) cout<<"Fall";
else cout<<"Winter";
return 0;
}
장학금
중간고사를 90점 이상 받은 자들로 한해서, 기말고사 점수에 따라 장학금을 지급하기로 했습니다. 기말고사 점수가 100점 만점에 95점 이상은 10만 원, 90점 이상은 5만 원, 그 미만 점수는 받지 못합니다. 중간, 기말고사 점수를 입력했을 때 받을 수 있는 장학금을 출력하는 프로그램을 작성해주세요.
#include<iostream>
using namespace std;
int main(){
int a,b;
cin >> a >> b;
if (a>=90){
if (b>=95) cout<<100000;
else if(b>=90) cout<<50000;
else cout<<0;
}
else cout<<0;
return 0;
}
좀 더 어려운 수학 점수
이번 중간고사에는 영어보다 수학이 특별히 더 어려웠습니다. 학생 A와 B가 서로의 점수를 가지고 우선순위를 나누려고 합니다. 영어 점수와 상관없이 수학 점수가 높다면 더 높은 학생의 이름을 출력하고, 만약 수학 점수가 같다면 영어 점수가 더 높은 학생의 이름을 출력하려고 합니다. 두 학생의 수학 점수와 영어 점수가 주어질 때, 위의 조건을 만족하는 학생의 이름을 출력하는 프로그램을 작성해보세요. (단, 수학 점수와 영어 점수가 둘 다 동일하게 주어지는 경우는 없다고 생각해도 좋습니다.)
#include<iostream>
using namespace std;
int main(){
int m1,e1,m2,e2;
cin >> m1 >> e1 >> m2 >> e2;
cout << (m1 == m2 ? (e1 > e2 ? "A" : "B") : (m1 > m2 ? "A" : "B"));
return 0;
}
두 사람
두 사람에 대한 정보로 나이와 성별이 주어집니다. 두 사람 중 한 사람이라도 19세이상이면서 남자라면 1을 출력하는 프로그램을 작성해보세요.
#include<iostream>
using namespace std;
int main(){
int o1,o2;
char j1,j2;
cin >> o1 >> j1 >> o2 >> j2;
if(o1>18 && j1 == 'M' || o2>18 && j2 == 'M') cout << 1;
else cout<<0;
return 0;
}
j1, j2는 문자type char을 이용했기 대문에 "
가 아닌 '
을 이용해야 한다