"/>

코드업 기초 – [기초-비교,논리,시프트]1047~1058번까지 해설,정답

-처음부터 풀기-

-오픈튜토리얼스에서 배우기-

1047 : [기초-비트시프트연산] 정수 한 개 입력받아 2 곱해 출력하기

문제 설명 

정수 한 개를 입력했을 때 2를 곱해 출력하는 프로그램을 작성해보자.

(단, -1073741824 ~ 1073741823)

입력

정수 한 개가 입력된다.
(단, -1073741824 ~ 1073741823)

출력

입력 받은 정수 * 2의 계산 결과가 출력된다.

입력 예시

1024

출력 예시

2048

문제 해설

int a=10;//(1010)
printf(“%d”, a<<1); //(10100)  20 이 출력된다.
printf(“%d”, a>>1); //(101)  5 가 출력된다.
printf(“%d”, a<<2); //(101000)  40 이 출력된다.
printf(“%d”, a>>2); //(10)  2 가 출력된다.

정답

#include <stdio.h>
int main()
{
 int a;
 scanf(“%d”, &a);
 printf(“%d”, a<<1);
 return 0;
}

1048 : [기초-비트시프트연산] 한 번에 2의 n승으로 출력하기

문제 설명

정수 두 개(a, b)를 입력받아 
(0 <= a, b <= 10)

a를 2의 b제곱 배를 출력하는 프로그램을 작성해보자.

입력

정수 두 개가 공백을 두고 입력된다.
(0 <= a , b <= 10)

출력

a를 2의 b제곱 배 만큼 곱해 출력한다.

입력 예시

1 3

출력 예시

8

문제 해설(코드업 도움말)

예를 들어 1 3 이 입력되면,
1을 2^3(8)배 하여 출력한다.

[예시]
int a=1, b=10;
printf(“%d”, a << b); //1024 가 출력된다.

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a<<b);
 return 0;
}

1049 : [기초-비교연산] 두 정수 입력받아 비교하기1

문제 설명

두 정수(a, b)를 입력받아 

a가 b보다 크면 1,

a가 b와 같거나 b가 a보다 크다면 0

을 출력하는 프로그램을 작성해보자.

입력

두 정수 a, b가 공백을 두고 입력된다.
(-2147483648 ~ 2147483647)

출력

a가 b보다 큰 경우 1을, 그렇지 않은 경우 0을 출력한다.

입력 예시

9 1

출력 예시

1

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a>b);
 return 0;
}

1050 : [기초-비교연산] 두 정수 입력받아 비교하기2

문제 설명

두 정수(a, b)를 입력받아 

a와 b가 같으면 1,

a가 b와 같지 않으면 0을 출력하는 프로그램을 작성해보자.

입력

두 정수 a, b가 공백을 두고 입력된다.
(-2147483648 ~ 2147483647)

출력

a와 b의 값이 같은 경우 1, 그렇지 않은 경우 0을 출력한다.

입력 예시 

0 0

출력 예시

1

정답

 #include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a==b);
 return 0;
}

1051 : [기초-비교연산] 두 정수 입력받아 비교하기3

문제 설명
 
두 정수(a, b)를 입력받아,
b가 a보다 크거나 같으면 1, b가 a보다 작으면 0
을 출력하는 프로그램을 작성해보자.
입력

두 정수 a, b가 공백을 두고 입력된다.

(-2147483648 ~ 2147483647)

출력

b가 a보다 크거나 같은 경우 1, 그렇지 않은 경우 0을 출력한다.

입력 예시

0 -1

출력 예시

0

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a<=b);
 return 0;
}

1052 : [기초-비교연산] 두 정수 입력받아 비교하기4

문제 설명

두 정수(a, b)를 입력받아 

a와 b가 서로 다르면 1,

a와 b가 같으면 0

을 출력하는 프로그램을 작성해보자.

입력

두 정수 a, b가 공백을 두고 입력된다.
(-2147483648 ~ 2147483647)

출력

a와 b가 다른 경우 1, 그렇지 않은 경우 0을 출력한다.

입력 예시 

0 1

출력 예시

1

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a!=b);
 return 0;
}

1053 : [기초-논리연산] 참 거짓 바꾸기

문제 설명

1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때

반대로 출력하는 프로그램을 작성해보자.

입력

정수 1개가 입력된다.
(단, 0 또는 1 만 입력된다.)

출력

입력된 값이 0이면 1, 1이면 0을 출력한다.

입력 예시 

1

출력 예시

0

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d”, &a);
 printf(“%d”, !a);
 return 0;
}

1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기

문제 설명 

두 가지의 참(1) 또는 거짓(0)이 입력될 때,

모두 참일 때에만 참이 계산되는 프로그램을 작성해보자.

입력

1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

출력

둘 다 참(1)일 경우에만 1을 출력하고 이외의 경우에는 0을 출력한다.

입력 예시 

1 1

출력 예시

1

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a&&b);
 return 0;
}

1055 : [기초-논리연산] 하나라도 참이면 참 출력하기

문제 설명 

두 가지의 참(1) 또는 거짓(0)이 입력될 때,

하나라도 참이면 참이 계산되는 프로그램을 작성해보자.

입력

1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

출력

하나라도 참일 경우 1을 출력하고 이외의 경우에는 0을 출력한다.

입력 예시

1 1

출력 예시

1

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, a||b);
 return 0;
}

1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기

문제 설명

두 가지의 참(1) 또는 거짓(0)이 입력될 때,

참/거짓이 서로 다를 때에만 참이 계산되는 프로그램을 작성해보자.

이러한 논리 연산을 XOR(exclusive or, 배타적 논리합)연산이라고도 부른다.

집합의 의미로는 합집합에서 교집합을 뺀 것을 의미한다. 모두 같은 의미이다.

입력

1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

출력

참/거짓이 서로 다를 때에만 1을 출력하고 이외의 경우에는 0을 출력한다.

입력 예시

1 1

출력 예시

0

문제 해설

배타적 논리합(XOR, ^)
두 값의 각 자릿수를 비교해,값이 0으로 같으면 0, 값이 1로 같아도 0, 다르면 1을 계산한다.
(1100(십진수10)과 1010(“12)을 비교할때 0110(“6)이 된다.)

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, (a^b);
 return 0;
}

or

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, (a&&!b)||(!a&&b));
 return 0;
}

1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기

문제 설명

두 가지의 참(1) 또는 거짓(0)이 입력될 때,

참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자.

입력

1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

출력

참/거짓이 서로 같을 때에만 1을 출력하고 이외의 경우에는 0을 출력한다.

입력 예시

0 0

출력 예시

1

정답

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, (a||b!)&&(!a||b));
 return 0;
}

or

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, !(a^b));
 return 0;
}

1058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기

문제 설명

두 가지의 참(1) 또는 거짓(0)이 입력될 때,

참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자.

입력

1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다.

출력

참/거짓이 서로 같을 때에만 1을 출력하고 이외의 경우에는 0을 출력한다.

입력 예시

0 0

출력 예시

1

정답

#include <stdio.h>
int main()
{
int a,b;
scanf(“%d %d”, &a, &b);
printf(“%d”, !(a||b));
return 0;
}

or

#include <stdio.h>
int main()
{
 int a,b;
 scanf(“%d %d”, &a, &b);
 printf(“%d”, !a&&!b);
 return 0;

}

-문제 이어서 풀기-

댓글 남기기

Scroll Up