Presentation is loading. Please wait.

Presentation is loading. Please wait.

11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용

Similar presentations


Presentation on theme: "11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용"— Presentation transcript:

1 11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
함수의 인자로 구조체 사용하기 열거형

2 구조체 정의 구조체 정의

3 구조체 변수의 선언 02 구조체 변수의 선언 students 구조체 정의 struct students {
char name[20]; char address[30]; char tel[15]; int grade int age } ; students 구조체 선언 int main( ) { struct students st1; return 0; }

4 구조체 포인터 선언 및 초기 03 구조체 포인터 선언 및 초기 struct ThreeDime { double x;
double y; double z; }; typedef struct ThreeDime ThreeDime; ThreeDime A1= { 3, 1, 8}; ThreeDime* pA1 = &A1; // 포인터 선언 및 초기화

5 【예제 11-1】Ex1.c 02 구조체 초기화 예제 01 #include <stdio.h>
02 struct list { 03    char name; 04    char sex;   int age; 06 } ; 07 int main(void) 08 { struct list st1, st2; st1.name = 'T'; st1.sex = 'M'; st1.age = 25; 13 st2.name = 'S'; st2.sex = 'F'; st2.age = 28; printf("이름    성별    나이\n"); printf(" \n"); printf(" %c       %c       %d\n", st1.name, st1.sex, st1.age); printf(" %c       %c       %d\n", st2.name, st2.sex, st2.age); return 0; 22 }

6 【예제 11-2】Ex2.c 02 구조체 초기화 예제 01 #include <stdio.h>
02 struct list { 03    char name; 04    char sex; 05    int age; 06 } ; 07 int main(void) 08 { struct list st1 = {‘T', 'M', 25}; 10 printf("구조체 list의 크기는 %d이다\n", sizeof(struct list)); printf("구조체 객체 st1의 크기는 %d이다\n", sizeof(st1)); return 0; 14 } 표준입력 스트림

7 【예제 11-3】Ex3.c 02 구조체에서 할당연산자 사용 예제 01 #include <stdio.h>
02 struct list { 03   char name; 04   char sex; 05   int age; 06 } ; 07 int main(void) 08 { struct list st1 = {‘T', 'M', 25}; struct list st2, st3 = {'P', 'F', 30}; st2 = st1; st3.name = st1.name; st3.sex = st1.sex; printf("     이름    성별    나이\n"); printf(" \n"); printf(" st1  %c       %c       %d\n", st1.name, st1.sex, st1.age); printf(" st2  %c       %c       %d\n", st2.name, st2.sex, st2.age); printf(" st3  %c       %c       %d\n", st3.name, st3.sex, st3.age); return 0; 20 }

8 【예제 11-4】Ex4.c 02 구조체 예제 01 #include <stdio.h>
02 struct students { 03     char name[20]; 04     char address[30]; 05     int age; 06 };             07 typedef struct students student; 08 int main(void) 09 { 10   student st1 = {"Moon", "Seoul", 25}; 11   struct students st2 = {"John", "London", 30};  printf("학생 1은 성이 %s 이고 %s 에 살며 %d 살이다.\n", 13          st1.name, st1.address, st1.age); 14   printf("학생 2는 성이 %s 이고 %s 에 살며 %d 살이다.\n", 15          st2.name, st2.address, st2.age); 16     return 0; 17 }

9 【예제 11-5】Ex5.c 02 구조체 예제 01 #include <stdio.h>
02 #include <math.h> 03 struct ThreeDime { 04    double x; 05    double y; 06    double z; 07 };         08 typedef struct ThreeDime ThreeDime; 09 int main(void) 10 { 11       double D1, D2; 12        ThreeDime A1, A2; 13        printf("3차원의 점 A1의 x, y, z 점을 입력하시오.\n"); 14        scanf("%lf %lf %lf", &A1.x, &A1.y, &A1.z); 15        printf("\n3차원의 점 A2의 x, y, z 점을 입력하시오.\n"); 16        scanf("%lf %lf %lf", &A2.x, &A2.y, &A2.z); 17        D1 = sqrt(A1.x * A1.x + A1.y * A1.y + A1.z * A1.z); 18        D2 = sqrt((A1.x-A2.x)*(A1.x-A2.x) + 19       (A1.y-A2.y)*(A1.y-A2.y) + (A1.z-A2.z)*(A1.z-A2.z)); 20        printf("\nA1점과 원점과의 거리는 %.2lf 이다.\n\n", D1); 21        printf("A1점과 A2점과의 거리는 %.2lf 이다.\n", D2); 22        return 0; 23 }

10 구조체 포인터를 통한 구조체 멤버 접근 04 구조체 포인터를 통한 구조체 멤버 접근 구조체 포인터 -> 멤버명
ex ) pA1->x pA1->y pA1->z

11 【예제 11-6】Ex6.c 02 포인터를 사용하는 구조체 01 #include <stdio.h>
02 struct ThreeDime { 03    double x; 04    double y; 05    double z; 06 };         07 typedef struct ThreeDime ThreeDime; 08 int main(void) 09 { 10        ThreeDime A1 = {3, 1, 8}; 11        ThreeDime* pA1 = &A1; 12        printf("3차원의 점 A1의 x : %.2lf, y : %.2lf,  z : %.2lf 이다.\n\n", 13                pA1->x, pA1->y, pA1->z);           14        return 0; 15 } 표준입력 스트림

12 【예제 11-7】Ex7.c 02 포인터를 사용하는 구조체 29 int main(void) 30 {
31        double D1, D2; 32        ThreeDime A1, A2, A3; 33        printf("3차원의 점 A1의 x, y, z 점을 입력하 시오.\n"); 34        scanf("%lf %lf %lf", &A1.x, &A1.y, &A1.z); 35        printf("\n3차원의 점 A2의 x, y, z 점을 입력 하시오.\n"); 36        scanf("%lf %lf %lf", &A2.x, &A2.y, &A2.z); 37        // D1 : A1점과 원점과의 거리 38        D1 = Distance(A1); 39        // D2 : A1점과 A2점과의 거리 40        D2 = Distance(A1, A2); 41         // A1점을 원점에 대칭 시킨 점 42         A3 = SymOri(A1);     43        printf("\nA1점과 원점과의 거리는 %.2lf 이다.\n\n", D1); 44       printf("A1점과 A2점과의 거리는 %.2lf 이다. \n", D2); 45        printf("A1점을 원점에 대칭 시킨 점의 x : %.2lf, y : %.2lf, z : %.2lf 이다.\n\n", A3.x, A3.y, A3.z); 46       return 0; 47 } 01 #include <stdio.h> 02 #include <math.h> 03 struct ThreeDime { 04    double x; 05    double y; 06    double z; 07 };         08 typedef struct ThreeDime ThreeDime; 09 double Distance1(ThreeDime a) 10 { 11    double d; 12    d = sqrt(a.x * a.x + a.y * a.y + a.z * a.z); 13   return d; 14 } 15 double Distance2(ThreeDime a, ThreeDime b) 16 { 17    double d; 18    d = sqrt((a.x-b.x)*(a.x-b.x) +(a.y-b.y)*(a.y-b.y) (a.z-b.z)*(a.z-b.z)); 20    return d; 21 } 22 ThreeDime SymOri(ThreeDime a) 23 { 24    a.x = -a.x; 25    a.y = -a.y; 26    a.z = -a.z; 27    return a; 28 }

13 【예제 11-8】Ex8.c 02 포인터를 사용하는 구조체 01 #include <stdio.h>
02 #include <math.h> 03 struct ThreeDime { 04    double x; 05    double y; 06    double z; 07 };         08 typedef struct ThreeDime ThreeDime; 09 double Distance1(ThreeDime* a) 10 { 11    double d; 12    d = sqrt(a->x * a->x + a->y * a->y + a->z * a->z); 14     return d; 15 } 16 ThreeDime SymOri(ThreeDime* a) 17 { 18     a->x = -a->x; 19     a->y = -a->y; 20     a->z = -a->z; 21     return *a; 22 } 23 int main(void) 24 { 25       double D1; 26        ThreeDime A1, A2, A3; 27 28        printf("3차원의 점 A1의 x, y, z 점을 입력하시오.\n"); 29        scanf("%lf %lf %lf", &A1.x, &A1.y, &A1.z); 30        // D1 : A1점과 원점과의 거리 31        D1 = Distance(&A1); 32        // A1점을 원점에 대칭 시킨 점 33         A3 = SymOri(&A1); 34      35        printf("\nA1점과 원점과의 거리는 %.2lf 이다.\n\n", D1); 36        printf("A1점을 원점에 대칭 시킨 점의 x : %.2lf, y : % .2lf, z : %.2lf 이다.\n\n", A3.x, A3.y, A3.z); 37        38       return 0; 39 }

14 열거형 (enum) 05 열거형 (enum) 열거형 정의 : enum 열거형 태그 { 열거형 상수 리스트 }; 사용 예 :
enum color {yellow, red, blue, green, magenta}; 변수 선언 enum color col = red;

15 【예제 11-9】Ex9.c 02 열거형의 예제 01 #include <stdio.h>
02 int main(void) 03 { enum { yellow, red, blue, green } color; 05         printf("원하는 색깔을 입력하세요.\n"); 06         printf("0번 : 노란색   1번 : 빨간색 \n"); 07         printf("2번 : 파란색   3번 : 초록색 \n"); 08         scanf("%d", &color); 09 10         if(color == yellow) printf("노란색입니다\n"); 11         else if(color == red) printf("빨간색입니다\n"); 12         else if(color == blue) printf("파란색입니다\n"); 13         else if(color == green) printf("초록색입니다\n"); 14        15       return 0; 16} 표준입력 스트림


Download ppt "11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용"

Similar presentations


Ads by Google