TEST BANK & SOLUTION
어서와자바는처음이지!" 를강의교재로채택해주셔서감사드립니다. 본문제집을만드는데나름대로노력을기울였으나제가가진지식의한계로말미암아잘못된부분이있을것으로사료됩니다. 잘못된부분을발견하시면 chunik@sch.ac.kr로연락주시면더좋은책을만드는데소중하게사용하겠습니다. 다시한번감사드립니다.
1. 자바언어에서지원되는 8 가지의기초자료형은무엇인가? byte, short, int, long, float, double, boolean, char 2. 문자열은어떤클래스를이용하여서처리할수있는가? String 클래스 3. 주민등록번호를프로그램에서저장하려면자바의어떤자료형을선택하는것이좋을까? 주민등록번호는숫자보다는문자열 (String 클래스 ) 로저장하는것이바람직하다. 하지만숫자로저장해야한다면 XXXXXX-YYYYYY와같이적어도 12자리이기때문에 long 을사용하여야할것이다. 그리고사용자가입력할때중간의 은입력하지않도록하여야할것이다. 4. 다음중에서올바른주석이아닌것은? (a) /** 주석 */ (b) /* 주석 */ (c) /* 주석 (c) (d) // 주석 5. 다음코드에서변수와상수를구별하시오. int k=10; long m=200l; double f=1.2345d; final int SIZE=100; int k=10; long m=200l; double f=1.2345; final int SIZE=100; // k는변수, 10은리터럴상수 // m은변수, 200L은리터럴상수 // f은변수, 1.2345는리터럴상수 // SIZE는기호상수 6. 다음과같은코드에서질문에답하라. int v = 10; int k = v++%5; (1) 코드가실행된후에 v 와 k 의값은무엇인가? v 는 11, k 은 0 이된다. (2) 만약두번째문장이 int k = ++v%5; 이었다면 v 와 k 의값은어떻게되는가? v 는 11, k 은 1 이된다.
7. 다음문장들을실행했을경우의출력결과를적으시오. System.out.println( 100 + 200 ); System.out.println(100+200); System.out.println( 100 +200); HINT 문자열에대하여 + 를적용하면 2 개의문자열이합쳐진다. 하나의피연산자라도문자열이면 문자열로변환된후에합쳐진다. 하지만 2 개의피연산자가모두숫자이면덧셈이실행된다. 실행결과 100200 300 100200 8. 참조형변수의크기는얼마일까? 즉몇바이트일까? 참조형변수는메모리의주소값 ( 참조값 ) 을가지고있다. 따라서 32 비트 CPU 를 사용하는컴퓨터의경우에는 4 바이트이고 64 비트 CPU 를사용하는컴퓨터의경우에는 8 바 이트가된다. 9. boolean 변수의값을 true 에서 false 로반전시키려면어떤연산자를사용하여야하는가?! 연산자 10. 2 개의값을비교하려고한다. = 연산자를사용하여야하는가? 아니면 == 연산자를사용 하여야하는가? == 연산자 11. 다음프로그램은약간의문법적인오류를가지고있다. 오류를지적하라. /* 처음작성하는프로그램입니다. public MyProgram { public static void main(string args[]); { int x, y // 두개의정수형변수선언 x = 10 y = 20 sum = x + y system.out.println(" 합은 ' + sum)
// 처음작성하는프로그램입니다. public class MyProgram { int x, y, sum; x = 10; y = 20; sum = x + y; System.out.println(" 합은 " + sum); 12. 다음의프로그램에서 6 의값이두번출력되는이유를설명하라. class Demo { public static void main(string[] args){ int i = 3; i++; System.out.println(i); // "4" ++i; System.out.println(i); // "5" System.out.println(++i); // "6" System.out.println(i++); // "6" System.out.println(i); // "7" System.out.println(++i); 에의하여 i 의값은 6 이된다. 왜냐하면 ++ 가수식의앞 에붙어있기때문이다. System.out.println(i++); 도역시 6 을출력하는데 ++ 가뒤에붙어 있기때문에증가가나중에이루어진다. 13. 각문장에서변수의값을표에기록하시오. 사용자는 2 3 과같이입력한다고가정한다. 1. 2. 3. public class Test { 4. 5. int x = 0; 6. System.out.println(x); 7. Scanner s = new Scanner(System.in); 8. x = s.nextint(); 9. x = s.nextint(); 10. boolean a = true, b = false, c = true; 11. a = (b c) && (a false); 12. 13. 14. 줄번호 x a b c 5 정의되지않음 정의되지않음 정의되지않음 8 정의되지않음 정의되지않음 정의되지않음 9 정의되지않음 정의되지않음 정의되지않음 10
11 줄번호 x a b c 5 0 정의되지않음 정의되지않음 정의되지않음 8 2 정의되지않음 정의되지않음 정의되지않음 9 3 정의되지않음 정의되지않음 정의되지않음 10 3 true false true 11 3 true false true 14. 다음의의사코드를자바프로그램으로변환하라. double 형의 speed, time, distance 변수를선언한다. speed 변수에 90.0 을저장한다. time 변수에 60.0 을저장한다. speed 와 time 을곱하고그결과를 distance 에저장한다. distance 를콘솔에출력한다. //double 형의 speed, time, distance 변수를선언한다. double speed, time, distance; //speed 변수에 90.0 을저장한다. speed = 90.0; //time 변수에 60.0을저장한다. time = 60.0; //speed와 time을곱하고그결과를 distance에저장한다. distance = speed * time; //distance를콘솔에출력한다. System.out.println(distance); 15. 하나의상자에오렌지를 10개씩담을수있다고하자. 오렌지가 127개가있다면상자몇개가필요한가? 또몇개의오렌지가남을까? 실행결과 : 127 12 7. HINT
public class Box { int oranges=0; System.out.print(" 오렌지의개수를입력하시오 : "); // 입력안내출력 oranges = input.nextint(); System.out.println(oranges/10 + " 박스가필요하고 " + oranges%10 + " 개가남습니다. "); 16. 마일을킬로미터로변환하는프로그램을작성하라. 1마일은 1.609킬로미터와같다. 사용자로부터마일의값을읽어들인다. 실행결과 : 10 10 16.09. HINT public class Mile2Km { double mile; double km; System.out.print(" 마일을입력하시오 : "); // 입력안내출력 mile = input.nextdouble(); km = 1.609 * mile; System.out.println(mile + " 마일은 " + km + " 킬로미터입니다."); 17. 상점에가면우리는상품에대한돈을내고영수증을받는다. 영수증에서는 10% 부가세와잔돈등이인쇄되어있다. 구입한상품의가격과손님한테받은금액을입력하면부가세와잔돈을출력하는프로그램을작성하여보자. 실행결과 : 10000 : 7500 : 750 : 2500
public class Calculator { int money; int price; int added_tax; int change; System.out.print(" 받은돈 : "); // 입력안내출력 money = input.nextint(); System.out.print(" 상품가격 : "); // 입력안내출력 price = input.nextint(); added_tax = (int) (price*0.1); change = money - price; System.out.println(" 부가세 : " + added_tax); System.out.println(" 잔돈 : " + change); 18. 사용자로부터구의반지름을입력받아서부피를계산하여출력하는프로그램을작성하라. 단구의반지름은실수로입력되며출력도모두실수형으로하여야한다. 부피를계산하는수식은다음과같다.
public class Sphere { double radius; double volume; System.out.print(" 구의반지름 : "); // 입력안내출력 radius = input.nextdouble(); volume = (4.0/3.0)*radius*radius*radius; System.out.println(" 구의부피 : " + volume); 19. 섭씨온도와화씨온도는다음과같은수식을만족한다. 사용자로부터화씨온도를받아서섭씨온도로환산하여출력하는프로그램을작성하시오. public class Temperature { double ctemp; double ftemp; System.out.print(" 화씨온도 : "); // 입력안내출력 ftemp = input.nextdouble(); ctemp = (5.0/9.0)*(ftemp-32.0); System.out.println(" 섭씨온도 : " + ctemp); 20. 정수 ( 최대 2 자리 ) 를 2 진수로변환하여서출력하는프로그램을작성해보자. 실행결과 : 33 33: 100001 33: 100001 HINT
public class BinaryConverter { int base10num; String result = ""; System.out.print(" 정수 : "); // 입력안내출력 int value = base10num = input.nextint(); result = base10num + result; System.out.println(value + ": " + result); System.out.println(value + ": " + Integer.toBinaryString(value));