ෆ ⋆ ₊ ゚ ☽ * ₊ ⋆

학교/Java

학생 수를 입력받아 학급의 성적을 처리하는 프로그램 (Grade)

우당탕가윤 2023. 2. 27. 20:10

2022학년도 2학기 수행평가 문제입니다.


■ 문제 설명

학생 수를 입력받아 한 학급의 성적을 처리하는 프로그램을 작성하시오.

 

■ 제한사항

  • 학생별 점수 3개를 입력받아 2차원 배열에 저장한다.
  • 각 학생은 시험을 3번 본 다음 그 중 가장 좋은 점수(최고점)을 가지고 평점을 계산한다.
  • 최고점이 90점 이상이면 5, 80점 이상이면 4, 70점 이상이면 3, 60점 이상이면 2, 그 나머지는 1로 한다.
  • 한 학급의 인원수(학생수)는 입력을 받는다.
  • 100보다 크거나 0보다 작은 수 입력하면 '다시 입력하세요==>' 메시지 출력!

 

■ 결과 예시


■ 나의 코드

import java.util.Scanner;
public class Grade1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		System.out.print("학생수 입력 : ");
		int n = scan.nextInt();
		int max = 0;
		int grade = 0;
		int score[][] = new int[n][3];
		
		System.out.println();
		for(int i=0; i<n; i++) {
			for(int j=0; j<3; j++) {
				System.out.print("점수 " + (j+1) + " 입력 : ");
				score[i][j] = scan.nextInt();
				if(score[i][j] > 100 || score[i][j] < 0) {
					System.out.print("다시 입력하세요==> ");
					j--;
				}
			}
			System.out.println();
		}
		
		System.out.println("=====================================");
		System.out.println("순번   점수1   점수2   점수3   최고점   평점");
		System.out.println("=====================================");
		for(int i=0; i<n; i++) {
			System.out.printf("%2d ", i+1);
			for(int j=0; j<3; j++) {
				if(score[i][j] > max) max = score[i][j];
				System.out.printf(" %5d ", score[i][j]);
				if(max >= 90) grade = 5;
				else if(max >= 80) grade = 4;
				else if(max >= 70) grade = 3;
				else if(max >= 60) grade = 2;
				else grade = 1;
			}
			System.out.printf(" %5d %5d\n", max, grade);
			grade = 0;
			max = 0;
		}
		System.out.println("=====================================");
	}
}

 

■ 코드 풀이

Scanner를 사용해 학생수와 점수를 입력받고, if문을 사용해 점수 조건에 맞지 않는다면 j를 감소시켜 다시 점수를 입력할 수 있도록 했습니다. 평점은 for문과 if문을 사용해서 구했고 printf를 사용해 자릿수를 맞췄습니다.