-
JAVA_06_실습_배열1. JAVA/1.2 실습 2022. 3. 16. 20:49
문제 1] 7학생의 5과목 점수를 랜덤하게 만들어서 기억시키고
각 학생 배열의 맨 마지막에는 총점을 계산해서 입력되게 하고
결과를 출력하는데 평균도 계산해서 출력하세요.
학생1 과목1/ 과목2 /과목3 /과목4 /과목 5 /총점
학생2 과목1/ 과목2 /과목3 /과목4 /과목 5 /총점public static void main(String[] args) { int[][]student = new int[7][6]; int result = 0; for(int i = 0; i<student.length;i++) { System.out.print("학생"+(i+1)+" "); for(int j = 0; j<student[i].length-1;j++) { student[i][j] = (int)(Math.random()*(100-60+1)+60); student[i][5]+=student[i][j]; System.out.print(student[i][j]+" / "); } System.out.print("총점 : " + student[i][5]); System.out.println(); double length = student[i].length-1; System.out.println("\t 평균 : " + student[i][5]/length); } }
문제2 ] 배열의 내용을 다섯과목의 7학생의 배열로 바꿔서 해결하세요.
int[][] stud = new int[7][6]; //6번째에는 총점 for(int i = 0; i<stud.length;i++) { for(int j = 0; j<stud[i].length-1;j++) { stud[i][j] = (int)(Math.random()*(100-60+1)+60); } } for(int i = 0; i<stud.length;i++) { System.out.print((char)('A'+i)+"학생 "); for(int j = 0; j<stud[i].length-1;j++) { System.out.print("과목"+(j+1)+" "+stud[i][j]+" "); } System.out.println(); } int[][] stud2 = new int[5][7]; //5 과목, 7학생 for(int i = 0; i<stud2.length;i++) { for(int j = 0; j<stud2[i].length;j++) { stud2[i][j] = stud[j][i]; } } for(int i = 0; i<stud2.length;i++) { int tmp = 0; for(int j = 0;j<stud2[i].length-1;j++) {; for(int k = j+1; k<stud2[i].length;k++) { if(stud2[i][j]<stud2[i][k]) { tmp = stud2[i][k]; stud2[i][k] = stud2[i][j]; stud2[i][j] = tmp; } } } } for(int i = 0; i<stud2.length;i++) { System.out.println("<< 과목"+(i+1)+" >>"); for(int j = 0; j<stud2[i].length;j++) { System.out.print((char)('A'+j)+"학생"+stud2[i][j]+" "); } System.out.println(); } } }
문제2-1]
7학생의 5과목 점수를 랜덤하게 만들어서 기억시키고
추가로 총점, 등수를 계산해서 입력되게 하고 등수 순으로 오름차순 정렬하고 결과를 출력하세요학생1 과목1 과목2 과목3 과목4 과목5 총점 등수
학생2 과목1 과목2 과목3 과목4 과목5 총점 등수
학생3 과목1 과목2 과목3 과목4 과목5 총점 등수
학생4 과목1 과목2 과목3 과목4 과목5 총점 등수
학생5 과목1 과목2 과목3 과목4 과목5 총점 등수
학생6 과목1 과목2 과목3 과목4 과목5 총점 등수
학생7 과목1 과목2 과목3 과목4 과목5 총점 등수public class Ex02_1 { public static void main(String[] args) { int[][]student = new int[7][7]; //과목1~과목 5 랜덤으로 입력 for(int i = 0; i<student.length;i++) { int sum = 0; for(int j = 0; j<student[i].length-2;j++) { student[i][j] = (int)(Math.random()*(100-60+1)+60); //총점 입력 sum+=student[i][j]; } student[i][5] = sum; } //확인차 출력 for(int i = 0; i<student.length;i++) { for(int j = 0; j<student[i].length;j++) { System.out.print(student[i][j]+" "); } System.out.println(); } //등수 입력 for(int i = 0; i<student.length;i++) { int rank = 1; for(int j = 0; j<student[i].length;j++) { if(student[i][5]<student[j][5]) { rank+=1; } student[i][6] = rank; } } System.out.println("========등수 입력후 출력========"); for(int i = 0; i<student.length;i++) { for(int j = 0; j<student[i].length;j++) { System.out.print(student[i][j]+" "); } System.out.println(); } //오름차순 정렬 for(int i = 0; i<student.length;i++) { //임시로 tmp 라는 변수를 생성해주었다. int tmp = 0; for(int j = 0; j<student[i].length;j++) { for(int k = i+1; k<student.length;k++) { if(student[i][6]>student[k][6]) { //i번째 등수가 k번째 등수보다 높을 경우 tmp 라는 임시 변수에 담아두어 tmp = student[i][j]; //k번째 등수를 i번째 등수에 대입시켜 student[i][j] = student[k][j]; //k번째에 담아두었던 i번째 데이터를 다시 입력시킨다. student[k][j] = tmp; } } } } System.out.println("========오름차순 정렬 후 출력========"); for(int i = 0; i<student.length;i++) { for(int j = 0; j<student[i].length;j++) { System.out.printf("%d ",student[i][j]); } System.out.println(); } } }
문제3 ] 0~9 사이의 숫자를 100개 발생시켜서 각각의 숫자가 몇번씩 발생했는지를 알아보자.
방법]
각 숫자의 횟수를 기억할 배열을 만들고 각 숫자가 발생할떄마다 1씩 누적public static void main(String[] args) { int[] array = new int[10]; for(int i = 0; i<array.length;i++) { array[i] = i; } System.out.println(Arrays.toString(array)); int[] cou = new int[10]; for(int i = 0; i<100; i++) { int temp = (int)(Math.random()*10); cou[temp]+=1; } for(int i = 0; i<array.length;i++) { System.out.println(array[i]+" : "+cou[i]); }
문제4 ] 랜덤하게 다섯명의 학생의 점수를 만들어서 배열에 기억을 시키고 각 학생의 석차도 기억할 배열을 만들어서
결과를 출력하시오
public static void main(String[] args) { int[] result = new int[5]; int[] rank = new int[5]; for(int i = 0; i<result.length;i++) { result[i] = (int)(Math.random()*(100-60+1)+60); } for(int i = 0; i<result.length;i++) { for(int j = 0; j<result.length;j++) { if(result[j]>result[i]) { rank[i]+=1; } } System.out.println(result[i]+" : "+(rank[i]+1)+"등"); } for(int i = 0; i<result.length;i++) { char ch = (char)('A'+i); System.out.println(ch+"학생의 점수 : "+result[i] + " / 석차 : "+(rank[i]+1)+"등"); }
문제5] 정수 5개를 기억할 배열을 만들고 데이터를 채워둔 후 1번방에서부터 3번방까지의 데이터만
다른 배열에 깊은 복사를 해보자. 이 때 복사될 타겟 배열은 길이를 10으로 하세요
public static void main(String[] args) { // 원본배열 int [] ori = {10,20,30,40,50}; int[] copy= new int[10]; //깊은 복사를 한다. System.arraycopy(ori, 0, copy, 0, 3); //배열 내용 출력 //ori System.out.println("ori : "+Arrays.toString(ori)); //copy System.out.println("copy : "+Arrays.toString(copy)); }
'1. JAVA > 1.2 실습' 카테고리의 다른 글
JAVA_08_실습_객체(1) (0) 2022.03.16 JAVA_07_실습_함수 (0) 2022.03.16 JAVA_05_실습_반복문과 조건문3 (0) 2022.03.16 JAVA_05_실습_반복문과 조건문2 (0) 2022.03.14 JAVA_04_실습_반복문과 조건문 (0) 2022.03.14