[4-1] 다음의 문장들을 조건식으로 표현하라.

1. int 형 변수 x 가 10 보다 크고 20 보다 작을 때 true인 조건식

10 < x && x < 20

2. char 형 변수 ch 가 공백이나 탭이 아닐 때 true인 조건식

ch != ' ' || ch != "\t"

3. char 형 변수 ch 가 ‘x' 또는 ’X' 일 때 true인 조건식

ch == 'x' || ch == 'X'

4. char 형 변수 ch가 숫자(‘0’~‘9’)일 때 인 조건식 true

'0' <= ch && ch <='9'

5. char 형 변수 ch 가 영문자 (대문자 또는 소문자 일 때) true인 조건식

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

6. int  형 변수 year 가 400 으로 나눠떨어지거나  또는 4로 나눠떨어지고 100으로 나눠떨어지지

않을 때 true인 조건식

year%400 == 0 || year%4 == 0 || year%100 != 0 

7. boolean  형 변수 powerOn 가 false 일 때 true인 조건식

powerOn == false

8.  문자열 참조변수 str이 “yes”일 때 true인 조건식

str.equals("yes")



[4-2] 1부터 20 까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Exercise4_2 {
 
    public static void main(String[] args) {
 
        int sum = 0;
 
        for(int i=1; i <=20; i++) {
 
            if(i%2!=0 && i%3!=0) //i 2 3 sum i . 가 또는 의 배수가 아닐 때만 에 를 더한다
 
                sum +=i;
 
        }
 
        System.out.println("sum="+sum);
 
    } // main
 
}


[4-3] 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10) . 의 결과를 계산하시오


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Exercise4_3 {
 
    public static void main(String[] args) {
 
        int sum = 0;
 
        int total = 0;
 
        for(int i=1; i <=10; i++) {
 
            sum +=i;
 
            total += sum;
 
        }
 
        System.out.println("total="+total);
 
    } // main
 
}


[4-4] 1+(-2)+3+(-4)+...과 같은 식으로 계속 더해나갔을 때 몇까지 더해야 총합이 100 이상이 되는지 구하시오


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class Exercise4_4 {
 
 
 
    public static void main(String[] args) {
 
        int op = 1;
 
        int i=0;
 
        for(int sum=0; sum<100;) {
 
            ++i;
 
            sum +=i*op;
 
            op = -op;
 
            System.out.println("i="+i);
 
            System.out.println("Sum="+sum);
 
        }
 
        System.out.println("최종 i="+i);
 
         
 
        int sum = 0;
 
        i = 0;
 
        op = 1;
 
        while (sum<100) {
 
            ++i;
 
            sum += i*op;
 
            op = -op;
 
        }
 
        System.out.println("최종 i="+i);
 
    } // main
 
}


[4-5] 다음의 for문을 while문으로 변경하시오

[연습문제]  /ch4/Exercise4_5.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Exercise4_5 {
 
    public static void main(String[] args) {
 
        for(int i=0; i<=10; i++) {
 
            for(int j=0; j<=i; j++)
 
                System.out.print("*");
 
            System.out.println();
 
        }
 
         
 
        int i = 0;
 
        while (i<=10) {
 
            ++i;
 
            int j = 0;
 
            System.out.println();
 
            while (j<i) {
 
            j++;
 
            system.out.print("*");
 
        }
 
        System.out.println("최종 i="+i);
 
    } // main
 
}


[4-6] 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하시오.

<pre class="brush: java">

class Exercise4_6 {

public static void main(String[] args) {

/* int ir = (int)(Math.random()*6+1);

int jr = (int)(Math.random()*6+1);*/

for (int i = 0; i < 7; i++) {

for (int j = 0; j < 6; j++) {

if (i+j==6) {

System.out.println(i+"+"+j+"=6");

}

}

}

}

}

</pre>



[4-7] Math.random() 1 6 value 을 이용해서 부터 사이의 임의의 정수를 변수 에 저장하는

코드를 완성하라 에 알맞은 코드를 넣으시오 . (1) .

[연습문제]  /ch4/Exercise4_7.java

<pre class="brush: java">

class Exercise4_7 {

public static void main(String[] args) {

int value = (int)(Math.random()*7);

System.out.println("value:"+value);

}

}

</pre>




[4-8] 방정식 2x+4y=10의 모든 해를 구하시오 단 x와 y는 정수이고 각각의 범위는 0<=x<=10, 0<=y<=10이다

<pre class="brush: java">

class Exercise4_8 {

public static void main(String[] args) {

for (int x = 0; x < 11; x++) {

for (int y = 0; y < 11; y++) {

if (2*x+4*y==10) {

System.out.println("x="+x+", y="+y);

System.out.println("2*"+x+" + 4*"+y+" = 10");

}

}

}

}

}

//[실행결과] 

//x=1, y=2

//x=3, y=1

//x=5, y=0

</pre>



[4-9] 숫자로 이루어진 문자열 str이 있을 때 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라

만일 문자열이 "12345"라면 ‘1+2+3+4+5’의 결과인 15를 출력이 출력되어야 한다 에 알맞은 코드를 넣으시오

[Hint] String 클래스의 charAt(int i)을 사용

[연습문제]  /ch4/Exercise4_9.java


<pre class="brush: java">

class Exercise4_9 {

public static void main(String[] args) {

String str = "12345";

int sum = 0;

for(int i=0; i < str.length(); i++) {

sum += (int)str.charAt(i)-48;

System.out.println((int)str.charAt(i)-48);

System.out.println(sum);

}

System.out.println("sum="+sum);

}

}

//[실행결과] 15

</pre>


[4-10] int 타입의 변수 num이 있을 때 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라 만일 변수 num의 값이

12345라면 1+2+3+4+5’의 결과인 15를 출력하라

[주의]  문자열로 변환하지 말고 숫자로만 처리해야 한다.

[연습문제] /ch4/Exercise4_10.java


<pre class="brush: java">

class Exercise4_10 {

public static void main(String[] args) {

int num = 12345;

int sum = 0;

/*

(1) . 알맞은 코드를 넣어 완성하시오

*/

while (num>0) {

sum += num%10;

System.out.println(sum);

num /= 10;

System.out.println(num);

}

System.out.println("sum="+sum);

}

}

//[실행결과] 15

</pre>


[4-11] 피보나치(Fibonnaci) 수열 (數列)은 앞을 두 수를 더해서 다음 수를 만들어 나가는 수열이다

예를 들어 앞의 두 수가 1과 1이라면 그 다음 수는 2가 되고 그 다음 수는 1과 2를 더해서 3이 되어서 

1,1,2,3,5,8,13,21,...과 같은 식으로 진행된다

1과 1부터 시작하는 피보나치수열의 10번째 수는 무엇인지 계산하는 프로그램을 완성하시오

[연습문제]  /ch4/Exercise4_11.java

<pre class="brush: java">

class Exercise4_11 {

public static void main(String[] args) {

// Fibonnaci 1, 1 . 수열의 시작의 첫 두 숫자를 로 한다

int num1 = 1;

int num2 = 1;

int num3 = 0; // 세번째 값

System.out.print(num1+","+num2);

for (int i = 3 ; i < 11 ; i++ ) {

num3 = num1+num2;

System.out.print(","+num3);

num1 = num2;

num2 = num3;

}

} // end of main

} // end of class

//[실행결과]

//1,1,2,3,5,8,13,21,34,55

</pre>



[4-12] 구구단의 일부분을 다음과 같이 출력하시오.

*/



//[실행결과] 

//2*1=2 3*1=3 4*1=4

//2*2=4 3*2=6 4*2=8

//2*3=6 3*3=9 4*3=12

//5*1=5 6*1=6 7*1=7

//5*2=10 6*2=12 7*2=14

//5*3=15 6*3=18 7*3=21

//8*1=8 9*1=9

//8*2=16 9*2=18

//8*3=24 9*3=27


/*

[4-13] 다음은 주어진 문자열 이 숫자인지를 판별하는 프로그램이다 에 알맞 (value) . (1)

은 코드를 넣어서 프로그램을 완성하시오.

[연습문제]  /ch4/Exercise4_13.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Exercise4_13{
 
    public static void main(String[] args){
 
        String value = "12o34";
 
        char ch = ' ';
 
        boolean isNumber = true;
 
        // charAt(int i) 반복문과 를 이용해서 문자열의 문자를
 
        // . 하나씩 읽어서 검사한다
 
        for(int i=0; i < value.length() ;i++) {
 
            ch = value.charAt(i);
 
            System.out.println(ch);
 
            if(!('0'<=ch && ch<='9')) {
 
            isNumber = false;
 
            break;
 
            }
 
        }
 
        if (isNumber) {
 
            System.out.println(value+" 는 숫자입니다.");
 
        } else {
 
            System.out.println(value+" 는 숫자가 아닙니다.");
 
        }
 
    } // end of main
 
} // end of class
 
//[실행결과]
 
//12o34 . 는 숫자가 아닙니다


[4-14] 다음은 숫자맞추기 게임을 작성한 것이다 과 사이의 값을 반복적으로 입력 . 1 100

해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다 사용자가 값을 입력하면 컴퓨터는 자 . ,

신이 생각한 값과 비교해서 결과를 알려준다 사용자가 컴퓨터가 생각한 숫자를 맞추면 .

게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다 에 알맞은 코드를 넣어 프 . (1)~(2)

로그램을 완성하시오.

[연습문제]  /ch4/Exercise4_14.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class Exercise4_14{
 
    public static void main(String[] args){
 
        // 1~100 answer . 사이의 임의의 값을 얻어서 에 저장한다
 
        int answer = (int)(Math.random()*100+1);
 
        int input = 0; // 사용자입력을 저장할 공간
 
        int count = 0; // 시도횟수를 세기위한 변수
 
        // Scanner 화면으로 부터 사용자입력을 받기 위해서 클래스 사용
 
        java.util.Scanner s = new java.util.Scanner(System.in);
 
        do {
 
            count++;
 
            System.out.print("1 과 100 사이의 값을 입력하세요 :");
 
            input = s.nextInt(); // input . 입력받은 값을 변수 에 저장한다
 
            if (input<answer) {="" system.out.println(count+"번째,="" 입력값이="" 답보다="" 작아요");="" }else="" if(input="">answer){
 
                System.out.println(count+"번째, 입력값이 답보다 큽니다");
 
            }else {
 
                System.out.println(count+"번째, 정답입니다");
 
                break;
 
            }
 
        } while(true); // 무한반복문
 
    } // end of main
 
} // end of class HighLow
 
//[실행결과]
 
//1 100 :50 과 사이의 값을 입력하세요
 
//더 큰 수를 입력하세요.
 
//1 100 :75 과 사이의 값을 입력하세요
 
//더 큰 수를 입력하세요.
 
//1 100 :87 과 사이의 값을 입력하세요
 
//더 작은 수를 입력하세요.
 
//1 100 :80 과 사이의 값을 입력하세요
 
//더 작은 수를 입력하세요.
 
//1 100 :77 과 사이의 값을 입력하세요
 
//더 작은 수를 입력하세요.
 
//1 100 :76 과 사이의 값을 입력하세요
 
//맞췄습니다.
 
//시도횟수는 번입니다 6 .
 
</answer)>



[4-15] 다음은 회문수를 구하는 프로그램이다 회문수 란 숫자를 거꾸로 읽 . (palindrome) ,

어도 앞으로 읽는 것과 같은 수를 말한다 예를 들면 이나 같은 수를 말한 . ‘12321’ ‘13531’

다 에 알맞은 코드를 넣어서 프로그램을 완성하시오 . (1) .

[Hint] 나머지 연산자를 이용하시오.

[연습문제]  /ch4/Exercise4_15.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Exercise4_15{
 
    public static void main(String[] args){
 
        int number = 12321;
 
        int tmp = number;   // 거꾸로 변환하기 위해 정의한 함수 tmp를 10으로 나눠
 
        int result =0;      // number 변수 를 거꾸로 변환해서 담을 변수
 
        while(tmp !=0) {
 
            result = result*10 + tmp % 10; //거꾸로 변환된 수는 10씩 키우고 뒤에 가져온 수 붙임
 
            System.out.println("result"+result);
 
            tmp /= 10;
 
            System.out.println("tmp"+tmp);
 
        }
 
        if(number == result)
 
            System.out.println( number + " 는 회문수 입니다.");
 
        else
 
            System.out.println( number + " 는 회문수가 아닙니다.");
 
    } // main
 
}
 
//[실행결과]
 
//12321