명품 자바 에센셜 연습문제 3장(이론)


문제와 해답은 직접 작성한 것으로 오타가 있을 수도 있으며 해답역시 틀린 부분이 있을 수 있습니다. 틀린 부분에 대한 지적은 적극 수용하도록 하겠습니다. 문제를 먼저 풀어보시고 참고용으로만 봐주시길 바랍니다.



연습문제 3장

1. while문을 가진 다음 프로그램에 대해 물음에 답하라.

int i = 0, sum = 0;
while(i<10) {
    i = i + 2;
    sum += i;
}
System.out.println(sum);

(1)무엇을 계산하는 프로그램이며, 실행 결과는?
10보다 작은 2의 배수를 더함, 30

(2)앞의 실행 결과와 동일한 실행 결과를 얻고자 할때 다음 빈칸을 채워라.

int i = 0, sum = 0;
while(true) {
    i = i + 2;
    sum += i;
    if(/*i > 10*/) break;
}
System.out.println(sum);
int i = 0, sum = 0;
do {
    i = i + 2;
    if(/*i > 10*/) continue;
    sum += i;
} while(i<10)
System.out.println(sum);


2. 다음 for문에 대해 물음에 답하라.

double sum = 0.0;
double d[] = {1.0, 2.3, 3.4, 5.5};
for(int i=0; i<4; i++) sum += d[i];
System.out.println(sum);

(1)예상되는 실행 결과는 무엇인가?
d 배열의 모든 값이 더해져 출력된다. [12.2]

(2)for(int i=0; i<4; i++) 부분을 배열의 length 필드를 이용히여 수정하라.
for(int i=0; i<d.length; i++)

(3)while문으로 바꾸어 작성하라.

double sum = 0.0;
double d[] = {1.0, 2.3, 3.4, 5.5};
int i = 0;
while(i < d.length) sum += d[i++];
System.out.println(sum);

(4)do-whlie 문으로 바꾸어 작성하라.

double sum = 0.0;
double d[] = {1.0, 2.3, 3.4, 5.5};
int i = 0;
do {
    sum += d[i++];
} while(i < d.length);
System.out.println(sum);

(5)for-each 문으로 바꾸어 작성하라.

double sum = 0.0;
double d[] = {1.0, 2.3, 3.4, 5.5};
for(double i : d) sum+= i;
System.out.println(sum);


3. 배열을 선언하고 생성하는 다음 물음에 답하라.

(1)10개의 문자를 가지는 배열 c를 생성하는 코드를 쓰라.
char c[] = new char[10];

(2)0에서 5까지 정수 값으로 초기화된 정수 배열 n을 선언하라.
int n[] = { 0, 1, 2, 3, 4, 5 };

(3)'일', '월', '화', '수', '목', '금', '토'로 초기화된 배열 day를 선언하라.
char [] day = { '일', '월', '화', '수', '목', '금', '토' };

(4)5행 4열 크기의 실수 배열 d를 선언하라.
double[][] d = new double[4][5];

(5)1에서 12까지 순서대로 정수로 초기화되는 3행 4열의 이차원 배열 var을 선언하라.

int[][] var = { {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12} };


4. 다음 코드에 대해 실행 중 오류가 발생하는 보기는?
②myArray[myArray.length] = 100;


5. 다음 2차원 배열 선언문에서 문법적으로 잘못된 것은?
④int [3][2] n = { {1, 2}, {3, 4}, {4, 5} };


6. for-each 문을 이용하여 배열 b를 모두 출력하고자 한다. 빈칸에 적절한 코드를 삽입하라.

boolean [] b = {true, false, true, true};
for(/*boolean boo : b*/)
    System.out.println(boo);


7. 다음은 사용자로부터 배열의 개수를 얻어서 배열을 생성하여 리턴하는 allocArray() 메소드를 작성하고자 한다.

<1> allocArray() {
    Scanner scanner = new Scanner(System.in);
    double [] n = new double[scanner.nextInt()];
    <2> // 배열 리턴

(1)빈칸을 적절한 코드로 채워라.
①static double[] ②return n;

(2)allocArray()를 호출하여 배열을 전달받는 한 줄의 코드를 작성하라.
double [] d = allocArray();


8.다음 코드에 대해 물음에 답하라.

(1)코드를 실행하면 출력되는 내용은?

123
계산을 끝냅니다.

(2)s가 “23.5”일 때 앞의 코드를 실행한 결과 출력되는 내용은?

23.5를 정수로 변환할 수 없습니다.
계산을 끝냅니다.


이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.