구조체 사용 성적 처리 프로그램 작성
이번 강좌에서는 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
배열의 각 요소에 대해 총점과 평균을 계산합니다. 총점은 kor
와 eng
멤버 변수의 합으로 계산되며, 평균은 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언어의 구조체를 사용하여 성적 처리 프로그램을 작성하는 방법을 배워보았습니다. 구조체는 여러 개의 변수를 묶어서 하나의 자료형으로 정의할 수 있는 기능으로, 복잡한 데이터를 효율적으로 관리할 수 있습니다. 구조체를 사용하여 성적 처리 프로그램을 구현하면, 입력한 학생의 성적을 효율적으로 저장하고 처리할 수 있습니다.