프로그래밍 언어/JAVA

명품 JAVA 3장 실습문제 2번 - 10번까지 해답

창조적생각 2021. 6. 27. 23:06

2. 다음 2차원 배열 n을 출력하는 프로그램을 작성하라.

 

int n[][] = {{1}, {1, 2, 3}, {1}, {1, 2, 3, 4}, {1, 2}};


1 2 3 

1 2 3 4 
1 2 

 

[풀이]

public class Exercise3_2 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

int n[][] = {

{1},

{1,2,3},

{1},

{1,2,3,4},

{1,2}
};

for(int i = 0; i < n.length; i++) { //2차원 배열은 중첩 반복문을 써야합니다. i는 행입니다. i행에서

for(int j = 0; j < n[i].length; j++) //j 열이 설정된 만큼 표시됩니다.

System.out.print(n[i][j] + " "); // n행렬의 한 행렬을 출력합니다.

System.out.println(); //그다음 행렬로 넘어가기전 한줄을 띄워줍니다.
}

}

}

 

 

 

 

 

3. Scanner를 이용하여 정수를 입력받고 다음과 같이 *를 출력하는 프로그램을 작성하라. 다음은 5를 입력받았을 경우이다.

정수를 입력하시오 >> 5
*****
****
***
**
*

 

[풀이]

import java.util.Scanner;

public class Exercise3_3 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner scanner = new Scanner(System.in);

System.out.print("정수를 입력하시오>>");

int n = scanner.nextInt();

 

for(int i = n; i > 0; i--) {  

for(int j = i; j > 0; j--) { 

   //i++, j++ 이 아니라 i--, j--를 쓴 이유는 위에서 아래로 갈수록 별이 줄어들기 때문입니다. 5개 ->4개->3개를 표현하는 것입니다.

System.out.print("*");}

System.out.println();

}

}

}

 

4. Scanner를 이용하여 소문자 알파벳을 하나 입력받고 다음과 같이 출력하는 프로그램을 작성하라. 다음은 e를 입력받았을 경우이다.

소문자 알파벳 하나를 입력하시오 >> e
abcde
abcd
abc
ab
a
[Hint] Scanner는 문자를 입력받는 기능이 없다. 그러므로 문자열을 입력받아야 한다. 다음 코드를 참고하라.

String s = scanner.next(); // 문자열 읽기
char c = s.charAt(0); // 문자열의 첫 번째 문자

 

[풀이]

package Exercise3_4;

public class Exercise3_4 {

   public static void main(String[] args) {
      // TODO Auto-generated method stub
      Scanner sc = new Scanner(System.in);
      String s;
      char c;

System.out.print("소문자 알파벳 하나를 입력하시오>>");

s = sc.next(); //s 에 문자열 읽기

c = s.charAt(0); //s의 첫번쨰 문자를 c에 입력

 

for(int i = 0; i<=c-'a'; i++) {
for(char j = 'a'; j<= c-i; j++) {

System.out.print(j);

}

System.out.println();

}

sc.close();

 

 

 

5. 양의 정수를 10개 입력받아 배열에 저장하고, 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력하는 프로그램을 작성하라.

양의 정수 10개를 입력하시오 >> 1 5 99 22 345 125 2346 55 32 85
3의 배수는 99 345 2346 

 

[풀이]

import java.util.Scanner

package Exercise3_5;

public class Exercise3_5 {

   public static void main(String[] args) {
      // TODO Auto-generated method stub
      Scanner sc = new Scanner(System.in);
      int num;

 

System.out.print("양의 정수 10개를 입력하시오>>");

for(int i=0; i <10; i++)

num = sc.nextInt();

 

if(num%3 == 0)

System.out.print(num);

sc.close();

}}

 

6. 배열과 반복문을 이용하여 프로그램을 작성해보자. 키보드에서 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전이 각 몇 개로 변환되는지 예시와 같이 출력하라. 이때 반드시 다음 배열을 이용하고 반복문으로 작성하라.

int[] unit = {50000, 10000, 1000, 500, 100, 50, 10, 1}; // 환산할 돈의 종류

금액을 입력하시오 >> 65123
50000 원 짜리 : 1개 
10000 원 짜리 : 1개 
1000 원 짜리 : 5개 
500 원 짜리 : 0개 
100 원 짜리 : 1개 
50 원 짜리 : 0개 
10 원 짜리 : 2개 
1 원 짜리 : 3개 

 

[풀이]

import java.util.Scanner;

public class Exercise3_6 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner scanner = new Scanner(System.in);

System.out.print("금액을 입력하세요.>>");

int money = scanner.nextInt();

int[] unit = {50000, 10000, 1000, 100, 10, 1};

 

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

System.out.print(unit[i] + "원 짜리 :" + money/unit[i]);

System.out.println;

money = money - (money  / unit[i])*unit[i];} //출력이후 반복 전에 money에서 앞자리를 제거해줍니다.

}

}

 

7. 정수를 10개 저장하는 배열을 만들고 1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 그리고 배열에 든 숫자들과 평균을 출력하라.

랜덤한 정수들 : 3 6 3 6 1 3 8 9 6 9 
평균은 5.4
[Hint] 1에서 10까지 범위의 정수를 랜덤하게 생성할 때는 다음 코드를 이용하라.

int i  = (int)(Math.random()*10+1);

 

[풀이]

public class Example3_7 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

int n[];

n =new int[10];

int sum = 0;

int count = 0; //평균값을 구하기 위해 sum과 count 변수를 지정해줍니다.

System.out.print("랜덤한 정수들 :");

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

n[i] = (int)(Math.random()*10+1);

sum+=n[i];

count+=1;

System.out.print(n[i]+" ");}
System.out.print("평균은" + sum/count);

}

}

 

8. 정수를 몇 개 저장할지 키보드로부터 개수를 입력받아(100보다 작은 개수) 정수 배열을 생성하고, 이곳에 1에서 100까지 범위의 정수를 랜덤하게 삽입하라. 배열에는 같은 수가 없도록 하고 배열을 출력하라.

정수 몇개? >> 24
26 87 78 44 93 99 37 40 2 63 
95 82 51 53 4 94 5 14 33 39 
32 58 70 6 

 

[풀이]

import java.util.Scanner;

public class Exercise3_8_copy {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner sc = new Scanner(System.in);

int arr[];
int n;

 

System.out.print("정수 몇개?>>");

n = sc.nextInt();

 

arr = new int[n];

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

int tmp = (int)(Math.random()*100+1); // 중복 검증을 위해 변수 tmp에 임시로 배열을 저장합니다.

int chk = 0; //그리고 다음에 올 if조건문을 위해 chk변수를 지정합니다.

for(int j=0; j<arr.length; j++) {

if(tmp == arr[j]) {

chk=1;

break; // 만약 중복된 수가 있다면

}

}

if(chk == 1) { // 다시 앞으로 돌려보냅니다.
i--;
continue; //중복이 없다면 아래로 보내 arr[i]를 출력합니다.

}

arr[i] = tmp;

}

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

if(i%10 == 0 && i != 0) System.out.println(); //한 행에 10열씩 출력하기 위함입니다.

System.out.print(arr[i] + " ");

}

sc.close();

 

9. 4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.

8 6 1 1 
7 3 6 9 
4 5 3 7 
9 6 3 1 

 

[풀이]

public class Exercise3_9 {

 

public static void main(String[] args) { 

// TODO Auto-generated method stub

int n[][];

n = new int[4][4];

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

for (int j = 0; j < n[i].length; j++) {

n[i][j] = (int)(Math.random()*10+1);

System.out.print(n[i][j] + " ");}

system.out.println()

}

}

}

 

10. 4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 10개만 랜덤하게 생성하여 임의의 위치에 삽입하라. 동일한 정수가 있어도 상관없다. 나머지 6개의 숫자는 모두 0이다. 만들어진 2차원 배열을 화면에 출력하라.

7 1 9 0 
0 0 0 1 
4 4 4 0 
7 4 5 0 

 

[풀이]

public class Exercise3_10 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr[][] = new int[4][4];

int x, y;

 

for(int result = 0; result < 10; result++) {

x = (int)(Math.random()*4);

y = (int)(Math.random()*4);

 if(arr[y][x]==0) {

arr[y][x] = (int)(Math.random()*10+1);}

}

}

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

for(int j=0; j<arr[i].length; j++) {

System.out.print(arr[i][j] + " ");

}

System.out.println();

}

}

}

 

 

 

728x90