구조체 사용 성적 처리 프로그램 작성

  • 5 minutes to read

이번 강좌에서는 C언어의 구조체를 사용하여 성적 처리 프로그램을 작성하는 방법을 배워보겠습니다.

구조체란?

구조체(Structure)는 C언어에서 여러 개의 변수를 묶어서 하나의 데이터 형식으로 정의할 수 있는 기능입니다. 이를 통해 복잡한 데이터를 효율적으로 관리할 수 있습니다.

구조체는 struct 키워드와 함께 선언할 수 있습니다. 예를 들어, 아래와 같이 이름과 나이를 저장하는 구조체를 선언할 수 있습니다.

struct Person {
    char name[20];
    int age;
};

이 구조체를 사용하여 여러 개의 사람 정보를 저장할 수 있습니다.

struct Person p1 = {"Alice", 25};
struct Person p2 = {"Bob", 30};

구조체를 사용한 성적 처리 프로그램

이제 구조체를 사용하여 성적 처리 프로그램을 작성해보겠습니다. 먼저, 학생의 이름과 국어 점수, 영어 점수를 저장하는 구조체를 정의합니다.

typedef struct Score {
    char name[10];  // *name : 이름
    int kor;
    int eng;
} Score;

이 구조체는 학생의 이름과 국어 점수, 영어 점수를 저장할 수 있는 멤버 변수를 가지고 있습니다.

다음으로, main() 함수에서는 Score 구조체 형 배열을 선언합니다. 이 배열은 두 명의 학생에 대한 성적을 저장합니다.

int main() {
    int i = 0;
    Score objScore[2];
    // ...
}

for 루프를 사용하여 scanf() 함수를 통해 학생의 이름, 국어 점수, 영어 점수를 입력받습니다.

for (i = 0; i < 2; i++) {
    printf("\n%d번째 이름 : ", i + 1);
    scanf("%9s", objScore[i].name);
    printf("\n국어점수 : ");
    scanf("%d", &objScore[i].kor);
    printf("\n영어점수 : ");
    scanf("%d", &objScore[i].eng);
}

이때 %9s를 사용하여 이름을 입력받습니다. %9s는 문자열의 길이를 9로 제한하는 서식지정자입니다.

다음으로, for 루프를 사용하여 Score 배열의 각 요소에 대해 총점과 평균을 계산합니다. 총점은 koreng 멤버 변수의 합으로 계산되며, 평균은 tot 멤버 변수를 2.0으로 나눈 결과입니다.

// Process : 총점과 평균 구하기.
for (i = 0; i < 2; i++) {
    // 총점
    objScore[i].tot = objScore[i].kor + objScore[i].eng;
    // 평균
    objScore[i].avg = objScore[i].tot / 2.0;
}

마지막으로, for 루프를 사용하여 각 학생의 이름, 국어 점수, 영어 점수, 총점, 평균을 출력합니다.

printf("이름\t국어\t영어\t총점\t평균\t\n");
for (i = 0; i < 2; i++) {
    printf("%6s %4d %4d %4d %4.1f\n",
        objScore[i].name,
        objScore[i].kor,
        objScore[i].eng,
        objScore[i].tot,
        objScore[i].avg);
}

이렇게 구현된 성적 처리 프로그램은 두 명의 학생에 대한 성적을 입력받아 총점과 평균을 계산하고, 이를 출력합니다.

전체 소스는 다음과 같습니다.

코드: struct_score.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// 구조체 설계.
typedef struct Score
{
    char name[10];  // *name : 이름
    int kor;
    int eng;
    int tot;
    double avg;
} Score;

int main(void)
{
    int i = 0;
    Score score[2];

    // 구조체 형 배열 초기화 : scanf()
    for (i = 0; i < 2; i++)
    {
        printf("%d번째 이름: ", i + 1);
        scanf("%9s", score[i].name);
        printf("국어점수: ");
        scanf("%d", &score[i].kor);
        printf("영어점수: ");
        scanf("%d", &score[i].eng);
    }

    // Process : 총점과 평균 구하기.
    for (i = 0; i < 2; i++)
    {
        // 총점
        score[i].tot = score[i].kor + score[i].eng;
        // 평균
        score[i].avg = score[i].tot / 2.0;
    }

    // Output : 결과 출력
    printf("\n 이름  국어  영어  총점  평균\n");
    for (i = 0; i < 2; i++)
    {
        printf("%5s %5d %5d %5d %5.1f\n",
            score[i].name,
            score[i].kor,
            score[i].eng,
            score[i].tot,
            score[i].avg);
    }

    return 0;
}
1번째 이름: AAA
국어점수: 100
영어점수: 90
2번째 이름: BBB
국어점수: 95
영어점수: 85

 이름  국어  영어  총점  평균
  AAA   100    90   190  95.0
  BBB    95    85   180  90.0

마무리

이번 강좌에서는 C언어의 구조체를 사용하여 성적 처리 프로그램을 작성하는 방법을 배워보았습니다. 구조체는 여러 개의 변수를 묶어서 하나의 자료형으로 정의할 수 있는 기능으로, 복잡한 데이터를 효율적으로 관리할 수 있습니다. 구조체를 사용하여 성적 처리 프로그램을 구현하면, 입력한 학생의 성적을 효율적으로 저장하고 처리할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com