[정답] 46. 배열 선언문

◈ 기본 연습
1. 한 학생의 국어 성적, 영어 성적, 수학 성적을 관리하는 배열을 선언하세요.
그리고 초기값으로 국어 성적은 80, 영어 성적은 60, 수학 성적은 90으로 지정하고 각 원소의 값을 출력하세요.
답:

//1. 한 학생의 국어 성적, 영어 성적, 수학 성적을 관리하는 배열을 선언하세요.
//그리고 초기값으로 국어 성적은 80, 영어 성적은 60, 수학 성적은 90으로 지정하고 
//각 원소의 값을 출력하세요.
#include <stdio.h>
enum SubjectType
{
    KOREAN, ENGLISH, MATH,MAX_SUBJECT
};
 
int main(void)
{
    int scores[MAX_SUBJECT] = { 80,60,90 };
    const char *titles[MAX_SUBJECT] = { "국어","영어","수학" };
    int si;
    for (si = 0; si < MAX_SUBJECT; si++)
    {
        printf("%s과목 성적:%3d\n", titles[si], scores[si]);
    }
    return 0;
}

2. 다음의 출력 결과를 예측하시오.

#include <stdio.h>
int main()
{
    int arr[10]={1};
    int index = 0;
 
    for(index = 0; index<10; index++)
    {
        printf("%d\n",arr[index]);
    }
    return 0;
}

답:
1
0
0
0
0
0
0
0
0
0

3. 세 학생의 국어 성적, 영어 성적, 수학 성적을 관리하는 배열을 선언하세요.
그리고 세 명의 성적을 입력받아 과목별 합계와 평균을 출력하시오.
그리고 학생별로 합계와 평균을 출력하시오.
답:

//세 학생의 국어 성적, 영어 성적, 수학 성적을 관리하는 배열을 선언
//그리고 세 명의 성적을 입력받아 과목별 합계와 평균을 출력
//그리고 학생별로 합계와 평균을 출력
 
#include <stdio.h>
#define MAX_STUDENT 3
enum SubjectType
{
    KOREAN, ENGLISH, MATH, MAX_SUBJECT
};
 
int main(void)
{
    int scores[MAX_STUDENT][MAX_SUBJECT];
    const char *titles[MAX_SUBJECT] = { "국어","영어","수학" };
    int ni,si;
    int sum;    
    for (ni = 0; ni < MAX_STUDENT; ni++)
    {
        printf("%d번째 학생 성적 입력\n", ni+1);
        for (si = 0; si < MAX_SUBJECT;si++)
        {
            printf("%s 성적 입력:", titles[si]);
            scanf_s("%d", scores[ni] + si);        
        }
    }
 
    for (ni = 0; ni < MAX_STUDENT; ni++)
    {        
        for (sum = 0, si = 0; si< MAX_SUBJECT; si++)
        {
            sum += scores[ni][si];
        }
        printf("%d번째 학생 성적 합계%d , 평균:%.2f\n", ni+1, sum, sum / (double)MAX_SUBJECT);
    }
    return 0;
}