[연습문제] Chapter03 연산자
[01]
다음 연산의 결과를 적으시오.
class Exercise3_1 {
public static void main(String[] args) {
int x = 2;
int y = 5;
char c = 'A'; // 'A'의 문자코드는 65
System.out.println(1 + x << 33);
System.out.println(y >= 5 || x < 0 && x > 2);
System.out.println(y += 10 - x++);
System.out.println(x+=2);
System.out.println( !('A' <= c && c <='Z') );
System.out.println('C'-c);
System.out.println('5'-'0');
System.out.println(c+1);
System.out.println(++c);
System.out.println(c++);
System.out.println(c);
}
}
-
System.out.println(1 + x « 33);
x는 2이고 3을 비트자리 33을 왼쪽으로 이동하는문제입니다. 3을 이진법으로 나타내면 00000011인데 int는 4바이트입니다.
1바이트는 8비트로 이루어져있어서 32비트인데 33만큼 밀면 다른 값은 사라지겠지만 int의 경우 한바퀴돌아서 32번밀리면 원래 값이고 거기서 1번밀렸으니
<< 33
은<< 1
과 같아 00000110 == 6입니디다. -
System.out.println(y >= 5 x < 0 && x > 2); : true
-
- System.out.println(y += 10 - x++);
-
13
-
- System.out.println(x+=2);
-
4
-
- System.out.println( !(‘A’ <= c && c <=’Z’) );
-
false
-
- System.out.println(‘C’-c);
-
‘C’ - ‘A’ => 2
-
- System.out.println(‘5’-‘0’);
-
5
-
- System.out.println(c+1);
-
66
-
- System.out.println(++c);
-
B
-
- System.out.println(c++);
-
A
-
- System.out.println(c);
-
A
[02]
아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다. 만일 사과의 수가 123개이고 하나의 바구니에는 10개의 사과를 담을 수 있다면, 13개의 바구니 가 필요할 것이다. (1)에 알맞은 코드를 넣으시오.
class Exercise3_2 {
public static void main(String[] args) {
int numOfApples = 123; // 사과의 개수
int sizeOfBucket = 10; // 바구니의 크기(바구니에 담을 수 있는 사과의 개수)
int numOfBucket = ( /* (1) */ ); // 모든 사과를 담는데 필요한 바구니의 수
System.out.println("필요한 바구니의 수 :"+numOfBucket);
}
}
: numofapples /sizeofBucket
+ numofApples%sizeofBucket
[03]
아래는 변수 num의 값에 따라 ‘양수’, ‘음수’, ‘0’을 출력하는 코드이다. 삼항 연산 자를 이용해서 (1)에 알맞은 코드를 넣으시오.[Hint] 삼항 연산자를 두 번 사용하라.
class Exercise3_3 {
public static void main(String[] args) {
int num = 10;
System.out.println( /* (1) */ );
}
}
: "양수"
(num>0)? "양수":"음수"
[04]
아래는 변수 num의 값 중에서 백의 자리 이하를 버리는 코드이다. 만일 변수 num 의 값이 ‘456’이라면 ‘400’이 되고, ‘111’이라면 ‘100’이 된다. (1)에 알맞은 코드를 넣으 시오.
class Exercise3_4 {
public static void main(String[] args) {
int num = 456;
System.out.println( /* (1) */ );
}
}
: (int)(num / 100) * 100
[05]
아래는 변수 num의 값 중에서 일의 자리를 1로 바꾸는 코드이다. 만일 변수 num의 값이 333이라면 331이 되고, 777이라면 771이 된다. (1)에 알맞은 코드를 넣으시오.
class Exercise3_5 {
public static void main(String[] args) {
int num = 333;
System.out.println( /* (1) */ );
}
}
: (int)(num/10)* 10
[06]
아래는 변수 num의 값보다 크면서도 가장 가까운 10의 배수에서 변수 num의 값을 뺀 나머지를 구하는 코드이다. 예를 들어, 24의 크면서도 가장 가까운 10의 배수는 30이 다. 19의 경우 20이고, 81의 경우 90이 된다. 30에서 24를 뺀 나머지는 6이기 때문에 변 수 num의 값이 24라면 6을 결과로 얻어야 한다. (1)에 알맞은 코드를 넣으시오.
[Hint] 나머지 연산자를 사용하라
class Exercise3_6 {
public static void main(String[] args) {
int num = 24;
System.out.println( /* (1) */ );
}
}
: 10 - (num % 10)
[07]
아래는 화씨(Fahrenheit)를 섭씨(Celcius)로 변환하는 코드이다. 변환공식이 ‘C = 5/9 × (F - 32)’라고 할 때, (1)에 알맞은 코드를 넣으시오. 단, 변환 결과값은 소수점 셋째자리에서 반올림해야한다.(Math.round()를 사용하지 않고 처리할 것)
class Exercise3_7 {
public static void main(String[] args) {
int fahrenheit = 100;
float celcius = ( /* (1) */ );
System.out.println("Fahrenheit:"+fahrenheit);
System.out.println("Celcius:"+celcius);
}
}
: (int)((5/9 * (fahrenheit - 32))*100 + 0.5)/100f
-
반올림하는 법
Math.round(): 소수점 첫째자리에서 반올림한 값을 반환합니다.
float pi = 3.141592f;
float shortPi = Math.round(pi * 1000) / 1000f;
Math.round(3.141592f * 1000) / 10000f;
Math.round(3141.592f)/1000f;
3142 / 1000f;
3142.0f / 1000f
3.142f
float pi = 3.141592f;
float shortPi = (int)(pi * 1000) / 1000f;float shortPi = (int)(3.141592f * 1000) / 1000f;
float shortPi = (int)(3141.592f) / 1000f;
float shortPi = 3141 / 1000f;
float shortPi = 3141.0f / 1000f
float shortPi = 3.141f
[08]
아래 코드의 문제점을 수정해서 실행결과와 같은 결과를 얻도록 하시오.
class Exercise3_8 {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = a + b;
char ch = 'A';
ch = ch + 2;
float f = 3 / 2;
long l = 3000 * 3000 * 3000;
float f2 = 0.1f;
double d = 0.1;
boolean result = d==f2;
System.out.println("c="+c);
System.out.println("ch="+ch);
System.out.println("f="+f);
System.out.println("l="+l);
System.out.println("result="+result);
}
}
: c = 30 ch = C f = 1.05555 l = 9,000,000,000 result = true
int a = 10; int b= 20; int c = a+b; long l = 3000*3000*3000L
[09]
다음은 문자형 변수 ch가 영문자(대문자 또는 소문자)이거나 숫자일 때만 변수 b 의 값이 true가 되도록 하는 코드이다. (1)에 알맞은 코드를 넣으시오.
class Exercise3_9 {
public static void main(String[] args) {
char ch = 'z';
boolean b = ( /* (1) */ );
System.out.println(b);
}
}
package chapter03;
public class Exam09 {
public static void main(String[] args) {
char ch ='z';
boolean b = (ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')||(ch>='0'&&ch<='9');
System.out.println(b);
}
}
[10]
다음은 대문자를 소문자로 변경하는 코드인데, 문자 ch에 저장된 문자가 대문자인 경우에만 소문자로 변경한다. 문자코드는 소문자가 대문자보다 32만큼 더 크다. 예를 들어 ‘A’의 코드는 65이고 ‘a’의 코드는 97이다. (1)~(2)에 알맞은 코드를 넣으시오.
package chapter03;
public class Exam10 {
public static void main(String[] args) {
char ch = 'A';
char lowerCase = ( /* (1) */ ) ? ( /* (2) */ ) : ch;
System.out.println("ch:"+ch);
System.out.println("ch to lowerCase:"+lowerCase);
}
}
실행결과 :
ch:A
ch to lowerCase:a
package chapter03;
public class Exam10 {
public static void main(String[] args) {
char ch = 'A';
char lowerCase = (ch>='A'&&ch<='Z') ? ((char)(ch+32)) : ch;
System.out.println("ch:"+ch);
System.out.println("ch to lowerCase:"+lowerCase);
}
}
댓글남기기