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를 사용해 자릿수를 맞췄습니다.
'학교 > Java' 카테고리의 다른 글
부채꼴 클래스를 정의해 반지름을 입력받고, 부채꼴의 둘레와 면적을 계산해 출력하는 프로그램 (SectorForm) (0) | 2023.02.27 |
---|---|
배열을 입력받아 두 배열을 병합해 정렬하고 중복없이 출력하는 프로그램 (MergeSort) (0) | 2023.02.27 |
2차원 배열에 성적을 저장하고 전체 평균 점수를 구하는 프로그램 (Grade) (0) | 2023.02.27 |
양의 정수를 입력받아 배열에 저장하고 제일 큰 수를 출력하는 프로그램 (Max) (0) | 2023.02.27 |
문자열을 입력받아 거꾸로 출력하는 프로그램 (Reversestr) (0) | 2023.02.27 |