C언어 구조체를 사용해서 입력, 출력하기
2018. 10. 14. 13:45ㆍ개발노트
구조체에 대해서 먼저 알아봅시다.
C/C++ 프로그래밍 언어에서 구조화 된 데이터를 처리할 때 struct를 사용하는데 이를 구조체라고 한다.
구조화되었다는 말은 의미가 연결되어 한 덩어리로 처리하는 방식을 말한다.
관련된 컴퓨터 용어로 보면 record 그리고 Object와 비슷한 개념이다.
그리고 자료처리와 연관하여 데이터 구조와 연관이 되어 있다.
구조체는 각각의 변수를 저장해놓는 상자입니다.
학생의 이름, 국어, 영어, 수학점수를 입력받고
총점, 평균을 구해서 평균을 기준으로 학점을 구하는 소스를 짜봅시다.
일단 구조체를 만들어줍시다.
구조체는
typedef struct{
}
이런 형식으로 만들고 구조체 안에는 변수들이 들어가게 됩니다.
변수를 넣어주고 구조체의 이름은 Student 로 해주겠습니다.
필요한 변수는 이름, 수학점수, 영어점수, 국어점수, 총점, 평균, 학점 이렇게 총 7개의 변수입니다.
1 2 3 4 5 6 7 8 | typedef struct { char name[20]; int kor, eng, mat; int tot; double avg; char grade; }Student; | cs |
구조체를 만들어줬으니
main함수에서 끌어다 쓰기만 하면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | void main() { Student s1; printf("학생의 이름과 국어, 영어, 수학점수를 입력하세요. \n"); scanf("%s %d %d %d", s1.name, &s1.kor, &s1.eng, &s1.mat); s1.tot = s1.kor + s1.eng + s1.mat; s1.avg = (double)s1.tot / 3; if (s1.avg > 90) s1.grade = 'A'; else if (s1.avg>80) s1.grade = 'B'; else if (s1.avg>70) s1.grade = 'C'; else if (s1.avg>60) s1.grade = 'D'; else s1.grade = 'F'; printf("이름\t국어\t영어\t수학\t총점\t평균\t학점\n"); printf("%s\t%d\t%d\t%d\t%d\t%.1f\t%c \n", s1.name, s1.kor, s1.eng, s1.mat, s1.tot, s1.avg, s1.grade); } | cs |
Student s1 으로 구조체 Student를 s1이라는 이름으로 불러왔습니다.
이제 구조체를 사용하겠다고 할 때 s1을 사용하면 됩니다.
s1.변수명 을 사용하면 구조체 안에 있는 해당 변수를 가리킬 수 있습니다.
나머지 입력, 출력 방법은 위에서 보이듯이 일반 변수를 사용할 때와 동일합니다.