C언어 2차원배열을 이용한 성적관리 프로그램
뭐 제목만 거창하지, 사실 예제문제에 가깝습니다.
제목때문에 제 블로그를 찾아서 헛걸음 하신 분들 있다면 죄송합니다.
이제 본론으로 돌아가서 문제를 제시하겠습니다.
1. 사용자로부터 아래 그림에 있는 인원들의 각 과목 성적을 입력받는다.
2. 그리고 아래의 형태로 저장하여 출력해준다.
이 문제를 해결 할 수 있을 능력이면, 2차원 배열은 거의 마스터 하셨다고 봐도 됩니다.
다만, 프로그래밍 입문자인 분들이 2차원 배열을 처음 접하고 이 문제를 보면
상당히 고난이도의 문제로 느끼실 수 있습니다.
하지만 생각보다 어렵지 않으니 한번 코드를 작성해보시고, 그래도 되지않으면
아래의 제가 작성한 코드를 확인하고 이해해주시기 바랍니다.
#include <stdio.h>
int main(void){
int arr[5][5];
int sum = 0;
printf("철희, 철수, 영희, 영수순으로 국어, 영어, 수학, 도덕점수를 입력하세요.\n");
//사용자로부터 점수를 입력받음
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
scanf_s("%d", &arr[i][j]);
//학생총점을 계산하여 저장
for (int i = 0; i < 4; i++){
sum = 0;
for (int j = 0; j < 4; j++){
sum += arr[i][j];
arr[i][4] = sum;//각 행의 마지막 인덱스에 학생의 총점을 저장
}
}
//과목총점을 계산하여 저장
for (int i = 0; i < 4; i++){
sum = 0;
for (int j = 0; j < 4; j++){
sum += arr[j][i];//반복문을 통해 배열위치를 적절히 설정
arr[4][i] = sum;//각 열의 마지막 인덱스에 과목의 총점을 저장
}
}
//배열의 마지막 값을 0으로 하여 null값을 입력
arr[4][4] = 0;//0으로 해주지 않을경우 쓰레기 값으로 초기화 됨
//배열전체 출력
for (int i = 0; i < 5; i++){
for (int j = 0; j < 5; j++){
//%3d는 %d를 출력할 때 띄어쓰기(스페이스바)를 3번하고 출력하겠다는 의미
printf("%3d", arr[i][j]);
}
printf("\n");
}
return 0;
}