easy software

C언어 2차원배열을 이용한 성적관리 프로그램 본문

C언어/포인터와 배열

C언어 2차원배열을 이용한 성적관리 프로그램

JAVA 웹개발자 2015. 1. 25. 23:49

뭐 제목만 거창하지, 사실 예제문제에 가깝습니다.

 

제목때문에 제 블로그를 찾아서 헛걸음 하신 분들 있다면 죄송합니다.

 

이제 본론으로 돌아가서 문제를 제시하겠습니다.

 

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;
}

Comments