4 분 소요

[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);
	}
}
  1. 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입니디다.

  2. System.out.println(y >= 5   x < 0 && x > 2);

    : true

  3. System.out.println(y += 10 - x++);

    13

  4. System.out.println(x+=2);

    4

  5. System.out.println( !(‘A’ <= c && c <=’Z’) );

    false

  6. System.out.println(‘C’-c);

    ‘C’ - ‘A’ => 2

  7. System.out.println(‘5’-‘0’);

    5

  8. System.out.println(c+1);

    66

  9. System.out.println(++c);

    B

  10. System.out.println(c++);

    A

  11. 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);
    }
}

업데이트:

댓글남기기