Presentation is loading. Please wait.

Presentation is loading. Please wait.

김진식 destiny738.tistory.com

Similar presentations


Presentation on theme: "김진식 destiny738.tistory.com"— Presentation transcript:

1 김진식 destiny738.tistory.com
작년 중간고사 풀이 김진식 destiny738.tistory.com

2 1번. Variable define <문제> 다음 자바 문들 중 맞는 것을 선택하세요.
int value = “10”; int value = 10.8; float number = 3.5; double number = 7; <문제> 다음 자바 문들 중 맞는 것을 선택하세요. int value = 10; // or String value = “10”; int value = 10; // or (int)10.8; float number = (float)3.5; double number = 7; <풀이> “ ” string 초기화시 사용 ex) String str = “Kim jinsik”; ‘ ’ char 초기화시 사용 ex) char flag = “Y”; 정수 모든 숫자 Type 초기화시 사용 ex) int intNum = 3; double doubleNum = 3; 실수 double 초기화시 사용 ex) double doubleNum = 3.5; ※ 주의점 : Java의 실수체계의 기본 Type은 double 입니다. 따라서, 소수를 초기화하게 되면 double로 인식을 하게 됩니다!!

3 2번. Identifier <문제> 다음 식별자들 중 틀린 것을 선택하세요. 5silly Silly$ Silly5
<풀이> * 식별자 규칙 - 첫 번째 글자는 문자이거나 ‘$’, ‘_’이어야 한다. (숫자는 맨 앞에 나올 수 없다!) - 두 번째 이후의 글자는 숫자, 문자, ‘$’, ‘_’이어야 한다. - 길이의 제한은 없다. - 키워드나 상수값은 사용할 수 없다.

4 3. Escape character <문제> 다음 출력문이 출력하는 결과를 선택하세요.
System.out.println(“This \tis a \“funny\”” + “\nstring.”); <풀이> * Escape character(\) - tab, Enter기능과 Print 문안에서 “ ”를 출력하고 싶을 때 사용 \t tab \n Enter \” ” \“ “ Answer. This is a “funny” string. <문제> System.out.println(“Sum of \“3” + “\”+\“5\”” + “\n\t= ” ); Answer. Sum of “3” + “5” = 35

5 4. Casting <문제> 다음과 같이 변수 선언문들이 주어진다면 아래 배정문들 중 틀린 것을 선택하세요.
byte b; int i; double d; char c; i = b; b = (byte) i; i = c; i = d; <풀이> * 강제 형변환 - 타입이 나타낼 수 있는 범위에 따라서 형변환이 달라진다. - 범위가 넓은 것 = 범위가 작은 것 - 범위가 작은 것 = (작은 것 type)범위가 넓은 것 - 정수형 = (정수type)실수형 위 문제에서, D번 i = d에서는 범위가 큰 double에서 int로 casting 없이 형변환하여 틀리게 된다.

6 5. if문 <문제> 다음 코드가 실행된 후에 변수 result에 어떤 값이 저장되는가?
int socre = 75; if ( score >= 90 ) result = ‘A’; else if ( score >= 60 ){ if ( score >= 80 ) result = ‘B’; else if ( score >= 70 ) result = ‘C’; if ( score >= 60 ) result = ‘D’; }else result = ‘F’; <풀이> if에 모두 동그라미를 친다. (else if는 제외) 동그라미가 나오면 score 값은 한번 더 비교 할 것이 틀림없다. 맨 위 동그라미에서 score가 90보다 작기 때문에 else if 문으로 들어올 것이다. 두 번째 동그라미에서 score가 80보다 작기 때문에 else if 문으로 들어올 것이다. 여기서 score가 70보다 크기 때문에 result = ‘C’가 될 것이다. 하지만, 마지막 동그라미가 남아 있는 것을 볼 수 있다. (이는 예전 if문에서 올바른 소스코드를 고르는 것과 연관이 깊다.) 이에 따라 정답은 result = D가 될 것이다.

7 Select correct coding! 1. If Syntax 점수의 분포에 따라 다음과 같이 성적을 준다.
80점 이상 90점 미만은 B, 70점 이상 80점 미만은 C. 70점 미만은 D if ( score >= 90 ) { grade = ‘A’; }else if ( score >= 80 ) { grade = ‘B’; } else if ( score >= 70 ){ grade = ‘C’; } else { grade = ‘D’; } Best! if ( score >= 90 ) { grade = ‘A’; } if ( score >= 80 ) { grade = ‘B’; if ( score >= 70 ) { grade = ‘C’; if ( score < 70 ){ grade = ‘D’; Worst! Error! 7

8 6. Switch / break if ( criterion == ‘q’ || criterion == ‘Q’ ) {
System.out.println(“Goodbye!”); System.out.println(“Enjoy!”); }else{ } <문제> 다음 프로그램의 출력결과는? public class IfSwitch{ public static void main(String[] args){ char criterion = ‘q’; if ( criterion == ‘q’ || criterion == ‘Q’ ) System.out.println(“Exiting...”); else System.out.println(“Keep playing!”); switch ( criterion ) { case ‘q’ : case ‘Q’ : System.out.println(“Goodbye!”); default : System.out.println(“Enjoy!”); } <풀이> switch문의 특징 : break가 없으면 해당 밑 부분을 지속 실행!

9 7. for loop <문제> 다음 코드의 출력 결과는? int I;
for ( I = 0 ; I < 10 ; ++I ) ++I; System.out.println(I); 20 자바 문법 오류이다. 10 5 <문제> 다음 코드의 출력 결과는? int I; for ( I = 0 ; I < 10 ; ++I ) ++I; System.out.println(I); 20 자바 문법 오류이다. 10 5 <풀이> for문을 while문으로 풀어보아라. int I = 0 while ( I < 10 ){ ++I; } System.out.println(I); I는 loop한 바퀴당 2씩 증가한다. I가 10이 되면(5바퀴 회전) while문이 false가 되어 반복이 종료된다. 자바 문법 오류는 무한반복이 일어나느냐를 묻는 것이다.

10 8. switch 문제 <문제> 1. input = a | output = ? 다음 문제들를 해결하시오?
2. input = b | output = ? 3. input = c | output = ? 4. input = d | output = ? 5. input = e | output = ? <문제> 다음 문제들를 해결하시오? Scanner s = new Scanner(System.in); char flag; flag = s.next().charAt(0); // 하나의 문자만 받기 switch ( flag ){ case ‘a’ : System.out.println(“1”); case ‘b’ : System.out.println(“2”); break; case ‘c’ : System.out.println(“3”); case ‘d’ : System.out.println(“4”); default : System.out.println(“5”); }

11 9. ++i, i++ <문제> 다음 코드의 출력 결과는? int count = 1;
while ( count < 5 ) System.out.print(count++ + “ ”); count = 1 print(1) count = 2 print(2) count = 3 print(3) count = 4 print(4) count = 5 (END) answer : <풀이> i++과 ++i의 차이를 이해하자. i = 1; System.out.println( ++i ); System.out.println( i++ ); i = i + 1; System.out.println( i ); // print 2 System.out.println( i ); // print 1 i = i + 1;

12 10. do-while / % <문제> 다음 코드의 출력 결과는? int sum = 0, k = 0; do {
if ( k % 2 != 0 ) sum += k; k++; }while ( k <= 10 ); System.out.println(“합계 = ” + sum); k k%2 If 조건 sum F 1 T 2 3 1+3 4 5 1+3+5 6 7 8 9 10 <풀이> % 연산자는 나머지 연산이다. 다음은 나머지 연산 사용의 대표적인 예이니 알아두자! k % 2 == 0 // 짝수 k % 2 != 0 // 홀수 이를 대입하여 위 문제를 해결하면 1~10까지 홀수의 합이 되게 된다. = 25

13 11. Practice 1 (20 점) 정방 피라미드는 바닥이 정사각형이고 다섯 개의 면을 가진 오면체이다. 이 피라미드는 아래 정사각형의 한 변의 길이 a 와 높이 h 에 의해 결정된다. 정방 피라미드의 부피를 계산하는 프로그램을 작성하라. 키보드를 통해 사용자로부터 아래 정사각형의 변의 길이 a와 높이 h를 입력 받아야 한다. 정방 피라미드의 부피를 계산하는 공식은 a 2 h이다. 정방 피라미드의 아래 정사각형의 변의 길이, 높이와 부피를 출력해야 한다. (설계 문서 작성 X/단순 코딩) 문제의 핵심 : a와 h의 타입을 어떻게 할 것인가? 정확한 값이 출력되는 프로그램인가? <문제 알고리즘> 사용자에게 정사각형 길이 a와 높이 h를 입력 받는다. 부피 a 2 h을 계산한다. 입력받은 값 a, h와 부피를 출력한다.

14 12. Practice 2 (20 점) 할인점에서 고객에게 청구 금액을 계산하는 프로그램을 설계하고 구현하라. 고객이 30만원 이상 구매하면 3만원을 할인해 주어야 하고 30만원 미만 10만원 이상을 구매하면 5,000원을 할인해 주어야 하고 10만원 미만을 구매하면 할인이 없어야 한다. 키보드로부터 구매 금액을 입력 받아야 한다. 구매 금액과 청구 금액을 출력해야 한다. 1 2 2 2 3 3 문제의 목표 : 청구 금액 계산 변수 : expenseMoney 구매 금액에 따라 할인 금액이 존재 변수 : buyMoney, disconutMoney 구매 금액을 입력 받아야 한다. 청구 금액을 출력 변수 : (1번과 2번 과정에 이미 정의) 변수 선언 expenseMoney 청구 금액 buyMoney 구매 금액 discountMoney 할인 금액 ※ 소수점이 사용될 사항이 없어 정수형으로 선언

15 12. Practice 2 (20 점) 할인점에서 고객에게 청구 금액을 계산하는 프로그램을 설계하고 구현하라. 고객이 30만원 이상 구매하면 3만원을 할인해 주어야 하고 30만원 미만 10만원 이상을 구매하면 5,000원을 할인해 주어야 하고 10만원 미만을 구매하면 할인이 없어야 한다. 키보드로부터 구매 금액을 입력 받아야 한다. 구매 금액과 청구 금액을 출력해야 한다. 사용자에게 “구매금액”을 입력 받는다. “구매금액”에 따른 다음 조건을 이용해여 할인 금액을 계산한다. “구매금액” >= 300, “할인금액” = 30,000 300,000 > “구매금액” >= 100, “할인금액” = 5,000 “구매금액” < 100,000 “할인금액” = 0 “청구금액” = “구매금액” – “할인금액” “구매금액”과 “청구금액”을 출력한다.

16 12. Practice 3 (20 점) 사용자로부터 0보다 큰 정수 n을 입력 받아 다음과 같은 조건을 만족하는 1과 n사이에 있는 정수들의 쌍 (i, j)를 출력하는 프로그램을 설계하고 구현하라: i는 j로 나누어 떨어져야 한다. i ≠ j 다음은 표본 출력이다: 한 정수를 입력하세요: 6 모든 나누어 떨어지는 정수들의 쌍은 다음과 같다: (2, 1) (3, 1) (4, 1) (4, 2) (5, 1) (6, 1) (6, 2) (6, 3) 특정 수와 그 수의 약수 집합 2부터 N까지의 숫자를 증가시키면서, 그 수의 약수 집합을 출력 필요한 변수 = input

17 12. Practice 3 (20 점) 사용자로부터 0보다 큰 정수 n을 입력 받아 다음과 같은 조건을 만족하는 1과 n사이에 있는 정수들의 쌍 (i, j)를 출력하는 프로그램을 설계하고 구현하라: i는 j로 나누어 떨어져야 한다. i ≠ j 사용자에게 “특정 값”을 입력 받는다. 1) 이 수가 0보다 작다면, Error를 출력하고 프로그램을 종료한다. 2) 그렇지 않다면, 2번 단계를 수행한다. “number”값을 1부터 “특정 값”까지 다음을 반복한다. ( number <= 특정 값) “loop”값을 1부터 “number”값 까지 반복한다. ( loop <= number ) number % loop == 0 을 만족하면, (number, loop)값 출력 프로그램을 종료한다.

18 12. Practice 3 (20 점) 사용자로부터 0보다 큰 정수 n을 입력 받아 다음과 같은 조건을 만족하는 1과 n사이에 있는 정수들의 쌍 (i, j)를 출력하는 프로그램을 설계하고 구현하라: i는 j로 나누어 떨어져야 한다. i ≠ j import java.util.Scanner; public class Test { public static void main(String[] args){ int input; Scanner s = new Scanner(System.in); System.out.print("input : "); input = s.nextInt(); for ( int number = 1 ; number <= input ; number++ ){ for ( int loop = 1 ; loop < number ; loop++ ){ if ( number % loop == 0 ) System.out.println("(" + number + "," + loop + ")"); }

19 13. 주의점 주석 달 것~! import java.util.Scanner; public class Test {
public static void main(String[] args){ int input; Scanner s = new Scanner(System.in); System.out.print("input : "); input = s.nextInt(); for ( int number = 1 ; number <= input ; number++ ){ for ( int loop = 1 ; loop < number ; loop++ ){ if ( number % loop == 0 ) System.out.println("(" + number + "," + loop + ")"); } 주석 달 것~!


Download ppt "김진식 destiny738.tistory.com"

Similar presentations


Ads by Google