1-8 배열과 구조체
② 배열과 구조체
• 사용자 정의 자료형 배열(arrays)이란?
- 기본적인 자료형 (int, float, char 등)으로는 자료의 선언과 저장에 한계가 있음.
- 사용자가 직접 자료형을 만들어 문제를 해결하고자 함.
• 구조체 정의
- 동일한 자료형의 데이터를 여러 개 저장할 수 있는 배열과 다르게
서로 다른 자료형을 가진 데이터를 함께 저장할 수 있게 한다.
- 다양한 자료형의 연관된 data 묶어서 사용할 수 있도록 사용자 정의형을
만드는 것을 구조체라고 한다.
Struct stu
{
int ID;
float eng,math;
char grade;
};
• 구조체 변수 선언
- 구조체 정의 후, 구조체 자료형을 사용하여 변수 선언함.
- typedef를 사용하여 구조체 자료형을 struct stu --> stu 로 바꿀 수 있음.
struct stu
{
int ID;
float eng,math;
char grade;
};
struct stu s1;
typedef struct stu stu;
stu s2;
• 구조체 예시
- "." 연산자를 사용하여 구조체 멤버에 접근한다.
- 평균과 학점 구하기 예시
#include<stdio.h>
#define MAX 3
struct stu
{
int ID;
float kor, eng, math;
float avrg;
char grade;
};
int main(void)
{ /*구조체 선언*/
struct stu s[MAX];
float korsum=0, engsum=0, mathsum=0;
/*점수 입력*/
printf("학번, 점수(국어, 영어, 수학)를 입력하세요.\n");
for(int i=0; i<MAX;i++)
{ scanf("%d %f %f %f", &s[i].ID, &s[i].kor, &s[i].eng, &s[i].math); //scanf에서는 \n 넣으면 안됨
}
/*입력된 점수 확인*/
printf("ID 및 점수 확인\n");
for (int i=0;i<MAX;i++)
{ printf("%d %5.2f %5.2f %5.2f\n", s[i].ID, s[i].kor, s[i].eng,s[i].math);
}
/*평균값 및 점수 구하기*/
for(int i=0; i<MAX;i++)
{s[i].avrg=(s[i].kor+s[i].eng+s[i].math)/3;
korsum+=s[i].kor;
engsum+=s[i].eng;
mathsum+=s[i].math;
if(s[i].avrg>=90)
s[i].grade ='A';
else if(s[i].avrg>=80)
s[i].grade ='B';
else if(s[i].avrg>=70)
s[i].grade ='C';
else if(s[i].avrg>=60)
s[i].grade ='D';
else
s[i].grade ='F';
}
/*학번, 평균점수, 학점 확인*/
printf("\n성적\n");
for(int i=0; i<MAX; i++)
{printf("학번: %d 평균 점수: %5.2f 학점: %c\n", s[i].ID,s[i].avrg,s[i].grade);
}
/*이 수업의 평균*/
printf("\n전체 평균\n");
printf("%5.2f %5.2f %5.2f\n",korsum/MAX,engsum/MAX,mathsum/MAX);
printf("\n한 학기 동안 수고하셨습니다. 즐거운 방학 보내시길 바라겠습니다.\n");
}
'Language > C' 카테고리의 다른 글
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-8_① 배열과 구조 (0) | 2023.06.08 |
---|---|
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-7 파일 입출력 (0) | 2023.06.07 |
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-6 반복문 (0) | 2023.06.05 |
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-5 조건문 (0) | 2023.06.05 |
[포스코 AI·Big Data 아카데미 사전학습] 컴퓨터 공학 입문 1-4 연산자 (0) | 2023.06.05 |