[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 |
'먼지 낀 책장사이 > Java' 카테고리의 다른 글
자바의 정석 연습문제 3장 연산자 (0) | 2017.07.26 |
---|---|
자바의 정석 연습문제 2장 변수 (0) | 2017.07.25 |