SQLD, ECLIPS, JAVA,PYTHON, NODE....

[Eclips] Java class 1 - 연산자 문제 본문

Java

[Eclips] Java class 1 - 연산자 문제

D_Aiden 2023. 12. 7. 19:52
728x90
반응형
SMALL

2023.12.7 연습문제 및 풀이

1.다음 연산의 결과를 적으시오.
class  Exercise1 {
public static void main(String[] args) {
             int x = 2;
             int y = 5;
             char c = 'A'; 
      System.out.println(1 + x << 33);     // (해석) int가 4byte이며, 1byte는 8bit이므로 32bit, (2진수) 1+32 << 33은 110(2진수)이므로 4+2=6(답)
      System.out.println(y >= 5 || x < 0 && x > 2);   // (해석)   y > = 5가 true이며, OR연산자이기 때문에 뒤에 조건식은 무시된다. true(답)
      System.out.println(y += 10 - x++);   //(해석) 식을 풀어보면 y = y + (10 - x++)이 된다. x는 후위연산자이기 떄문에 일단 (10 - x++)이 연산이 된 후에 x에 +1이 된다. 즉, y = y + 8이므로 13(답)
      System.out.println(x+=2);   //(해석) 위의 출력문에서 x는 후위연산이 되어 x = 3이 되었으며, x += 2는 5가 정답.
      System.out.println( !('A' <= c && c <='Z') );  //(해석) 안에 논리식은 대문자인지 확인 조건식. c의 값이 대문자('A)이므로 true, 논리부정 연산자가 있기 때문에 결과는 반대인 false.
      System.out.println('C'-c);  //(해석) 'C' 아스키코드 67, c('A') 아스키코드로 65, 67 - 65= 2(답)
      System.out.println('5'-'0');  //(해석)  아스키코드가 0-9까지 a-z까지 A-Z까지 연속 되므로 0과 5의 차이는 5(답)
      System.out.println(c+1);  //(해석) 위의 설명으로 연속적이기 때문에 66('B')답. 단,정수형 리터럴은 더하므로 형변환 발생. 정수가 나옴(답).
      System.out.println(++c);  //(해석) 선행연산자 +1 연산이 가장 먼저 일어나기 때문에 'B'(66) .
      System.out.println(c++);  //(해석) 후위연산자로 +1 연산이 가장 나중에 일어나며 따라서 'B'(66)가 나온 후 c의 값에 +1이 연산됨. 67(답)
      System.out.println(c);  //(해석) 위에 후위연산자로 +1을 연산되어 'C'인 67(답).
      }
}

 2.아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다. 
: 만일 사과의 수가 123개이고 하나의 바구니에는 10개의 사과를 담을 수 있다면, 13개의 바구니가 필요할 것이다. (1)에 알맞은 코드를 넣으시오.
class  Exercise2 {
         public static void main(String[] args) {
                  int numOfApples = 123;               // 사과의 개수
                  int sizeOfBucket = 10;                 // 바구니의 크기(바구니에 담을 수 있는 사과의 개수)
                  int numOfBucket
                   = (numOfApples%sizeOfBucket)==0?(numOfApples/sizeOfBucket):(numOfApples/sizeOfBucket)+1);
                                                                                  (1) --> 빨간색 코딩
System.out.println("필요한 바구니의 수 :"+numOfBucket);
           }
}

3.아래는 변수 num의 값에 따라 '양수','음수', 0을 출력하는 코드이다. 삼항 연산자를 사용해서 (1)에 알맞은 코드를 넣으시오.
class  Exercise3 {
public static void main(String[] args) {
int num = 10;
System.out.println(  (num == 0) ? '0' : ( (num > 0) ? "양수" : "음수") );       //삼항연산자는 (참 또는 거짓)? X : Y 형태
        }
}

 4.아래는 변수 num의 값 중에서 백의 자리 이하를 버리는 코드이다. 만일 변수 num의 값이 456이라면 400이되고 111이라면 100이 된다. (1)에 알맞은 코드를 넣으시오.
class  Exercise4 {
public static void main(String[] args) {
int num = 456;
System.out.println( (num/100)*100 );           //  456을 100으로 나눈 값이 45이고 나머지 6은 버리므로 45*100=400.
    }
}

 5.아래는 변수 num의 값 중에서 일의 자리를 1로 바꾸는 코드이다. 만일 변수 num의 값이 333이라면 331이 되고, 777이라면 771이 된다. (1)에 알맞은 코드를 넣으시오.
class  Exercise5 {
public static void main(String[] args) {
int num = 333;
System.out.println( (num/10)*10)+1  );     // 333나누기 10은 33.3이고 나머지는 버리면 30이 되고 10을 곱하면 330이고 +1이 되면 331이 나옴. 
    }
}

 6.아래는 변수 num의 값보다 크면서도 가장 가까운 10의 배수에서 변수 num의 값을 뺀 나머지를 구하는 코드이다. 
   예를 들어, 24의 크면서도 가장 가까운 10의 배수는 30이다. 19의 경우 20이고, 81의 경우 90이 된다. 
   30에서 24를 뺀 나머지는 6이기 때문에 변수 num의 값이 24라면 6을 결과로 얻어야 한다. (1)에 알맞은 코드를 넣으시오.    [Hint] 나머지 연산자를 사용하라.
class  Exercise6 {
public static void main(String[] args) {
int num = 24;
System.out.println( 10-(num%10) );      // 24에서 가까운 10의 배수는 30이고, 30-24=6.

    }
}

 7.아래 코드의 문제점을 수정해서 실행결과와 같은 결과를 얻도록 하시오.
class  Exercise7 {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = a + b;  (byte)(a+b);     // byte를 선언해서 합계를 담아야 됨

char ch = 'A';
ch = ch + 2;  (char) (ch+2));    // ch+2를 char에 담아야 됨

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.0
       l=1230196224
        result=false

 8.다음은 문자형 변수 ch가 영문자(대문자 또는 소문자)이거나 숫자일 때만 변수 b의 값이 true가 되도록 하는 코드이다. (1)에 알맞은 코드를 넣으시오.
class  Exercise8 {
public static void main(String[] args) {
char ch = 'z';
boolean b = ( chs>'a' && chs<='z') || (chs>'A' || chs<'z') || (chs>'0' && chs<'z');  // 소문자, 대문자, 0을 구별해서 참/거짓 구분하면, true값이 나옴
System.out.println(b);
    }
}

 9.다음은 대문자를 소문자로 변경하는 코드인데, 문자 ch에 저장된 문자가 대문자인 경우에만 소문자로 변경한다. 문자코드는 소문자가 대문자보다 32만큼 더 크다. 
  예를들어 'A'의 코드는 65이고 'a'의 코드는 97이다. (1)~(2)에 알맞은 코드를 넣으시오.
class  Exercise9 {
public static void main(String[] args) {
char ch = 'A';
char lowerCase = ( ch > 'A'  && ch < 'Z' ) ?  (  (char) (ch+32) ) ) : ch;    // 대문자를 참/거짓 확인 후, 아스키코드인 32보다 char로 'A'에 +32한 값을 담으면 됨.

System.out.println("upperCase:"+ch);
System.out.println("lowerCase:"+lowerCase);
     }
}


 

728x90
반응형
LIST