국비교육/문제풀이

20180627 연습문제 (ch3)

Hearthole 2018. 6. 27. 19:15

[3-1] 다음 연산의 결과를 적으시오.

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); 

//32번당 한바퀴. 011 > 0110 = 6

<<연산자가 +연산자보다 우선순위


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

//true||false&&false = true&&fasle = false

true||false&&false = true||false = true 

&&연산자가 ||연산자보다 우선순위


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

//y=15-x++ = y=13, x=3 

// y=13출력


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

//x=4

x=4


System.out.println( !('A' <= c && c <='Z') );

//'A'=65 'Z'=90 c=65 c='A' 이므로 'A'<=c<='Z'식의 부정은 false

System.out.println('C'-c);

//67-65=2


System.out.println('5'-'0');

//같은 실수 문자끼리의 차이므로 5-0 = 5


System.out.println(c+1);

//65에 정수1 추가하여 출력 = 66


System.out.println(++c);

//'A'에서 1증가연산 이후 출력이므로 B


System.out.println(c++);

//'B'문자 출력 후 1증가연산이므로 'B'


System.out.println(c);

//앞서 증가연산 되었으므로 'C'

}

}


[3-2] 아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다. 만일 사과의 수가 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);

}

}

[실행결과]

13

 (1) numOfApples/sizeOfBucket+1



[3-3] 아래는 변수 num의 값에 따라 ‘양수’, ‘음수’, ‘0’을 출력하는 코드이다. 삼항 연산자를 이용해서 (1)에 알맞은 코드를 넣으시오.

[Hint] 삼항 연산자를 두 번 사용하라.

class Exercise3_3 {

public static void main(String[] args) {

int num = 10;

System.out.println( /* (1) */ );

}

}

[실행결과]

양수


(1) num>=0?(num>0?"양수":"0"):"음수"


[3-4] 아래는 변수 num의 값 중에서 백의 자리 이하를 버리는 코드이다. 만일 변수 num의 값이 ‘456’이라면 ‘400’이 되고, ‘111’이라면 ‘100’이 된다. (1)에 알맞은 코드를 넣으시오.

class Exercise3_4 {

public static void main(String[] args) {

int num = 456;

System.out.println( /* (1) */ );

}

}

[실행결과]

400

(1) num/100*100


[3-5] 아래는 변수 num의 값 중에서 일의 자리를 1로 바꾸는 코드이다. 만일 변수 num의 값이 333이라면 331이 되고, 777이라면 771이 된다. (1)에 알맞은 코드를 넣으시오.

class Exercise3_5 {

public static void main(String[] args) {

int num = 333;

System.out.println( /* (1) */ );

}

}

[실행결과]

331

(1) num/10*10+1


[3-6] 아래는 변수 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) */ );

}

}

[실행결과]

6

(1) 10-(num%10)


[3-7] 아래는 화씨(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);

}

}

[실행결과]

Fahrenheit:100

Celcius:37.78

(1) (int)((5f/9f*(fahrenheit-32f))*100f+0.5f)/100f



[3-8] 아래 코드의 문제점을 수정해서 실행결과와 같은 결과를 얻도록 하시오.

class Exercise3_8 {

public static void main(String[] args) {

byte a = 10;

byte b = 20;

byte c = a + b; // (byte)형변환

char ch = 'A';

ch = ch + 2; // (char)형변환

float f = 3 / 2; // f접미사

long l = 3000 * 3000 * 3000; // L접미사

float f2 = 0.1f;

double d = 0.1; 

boolean result = d==f2; // d를 float으로 형변환

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.5

l=27000000000

result=true



[3-9] 다음은 문자형 변수 ch가 영문자(대문자 또는 소문자)이거나 숫자일 때만 변수 b의 값이 true가 되도록 하는 코드이다. (1)에 알맞은 코드를 넣으시오.

class Exercise3_9 {

public static void main(String[] args) {

char ch = 'z';

boolean b = ( /* (1) */ );

System.out.println(b);

}

}

[실행결과]

true

(1) 'a'<= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z'



[3-10] 다음은 대문자를 소문자로 변경하는 코드인데, 문자 ch에 저장된 문자가 대문자인 경우에만 소문자로 변경한다. 문자코드는 소문자가 대문자보다 32만큼 더 크다. 예를 들어 'A‘의 코드는 65이고 ’a'의 코드는 97이다. (1)~(2)에 알맞은 코드를 넣으시오.

class Exercise3_10 {

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


(1) 'A'<= ch && ch <= 'Z'

(2) (char)( ch+32 )


y180627.zip