ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어 구조체를 사용해서 입력, 출력하기
    개발노트 2018. 10. 14. 13:45

    구조체에 대해서 먼저 알아봅시다.


    C/C++ 프로그래밍 언어에서 구조화 된 데이터를 처리할 때 struct를 사용하는데 이를 구조체라고 한다.

    구조화되었다는 말은 의미가 연결되어 한 덩어리로 처리하는 방식을 말한다.

    관련된 컴퓨터 용어로 보면 record 그리고 Object와 비슷한 개념이다.

    그리고 자료처리와 연관하여 데이터 구조와 연관이 되어 있다. 

    https://ko.wikipedia.org/wiki/Struct


    구조체는 각각의 변수를 저장해놓는 상자입니다.

    학생의 이름, 국어, 영어, 수학점수를 입력받고

    총점, 평균을 구해서 평균을 기준으로 학점을 구하는 소스를 짜봅시다.


    일단 구조체를 만들어줍시다.

    구조체는 


    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.변수명 을 사용하면 구조체 안에 있는 해당 변수를 가리킬 수 있습니다.

    나머지 입력, 출력 방법은 위에서 보이듯이 일반 변수를 사용할 때와 동일합니다.


    댓글

Designed by Tistory.