안녕하세요 엘체프 GG 입니다.
오늘은 구조체입니다.
-구조체의 값을 구해보죠
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h> #include <stdlib.h> struct Point { int x; // x좌표 int y; // y좌표 }; int main(void) { int i; struct Point pt[3] = { { 10, 20 }, { 30, 40 }, { 50, 60 } }; struct Point *ptr = pt; for (i = 0; i<3; i++) { printf("%d번째 구조체 값: (%d, %d)\n", i + 1, ptr[i].x, ptr[i].y); } printf("첫번째 구조체 값: (%d, %d)\n\n", pt->x, pt->y); // (10,20) (정상) printf("두번째 구조체 값: (%d, %d)\n\n", (*ptr++).x, (*ptr++).y); // (30,20) (비정상 출력) -> (30, 40) (원래의 값) system("PAUSE"); return 0; } | cs |
구조체문제풀어보기
문) 아래의 형식과 같이 구성된 회원정보를 Member라는 이름의 구조체를 작성하고 데이터를 입력하여 출력 화면과 같이 인쇄될 수 있도록 프로그래밍합니다.
참고) 데이터 입력시 문자열은 아래와 같이 작성할 수 있다.
sprintf(member.email, "abcd@naver.com");
출력 결과 화면)
회원정보 아이디 : green_c
회원정보 이름 : 홍길동
회원정보 모바일 : 010-1234-5678
회원정보 연락처 : 02-111-2222
회원정보 가입일 : 2018-02-01
---------------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> // #include <string.h> // strcpy 사용시 typedef struct { char id[21]; //아이디 char pw[21]; //비밀번호 char name[51]; //이름 char gender; //성별 char email[51]; //이메일 char mobile[14]; //휴대폰번호 char phone[14]; //유선전화번호 char zip1[8]; //우편번호1 char address1[201]; //주소1 char zip2[8]; //우편번호2 char address2[201]; //주소2 char birthday[11]; //생년월일 char joindate[11]; //가입일 } Member; void main() { Member member; //구조체 호출 sprintf(member.id, "class"); sprintf(member.pw, "123456879"); sprintf(member.name, "남근곤"); member.gender = 'm'; sprintf(member.email, "abcd@naver.com"); sprintf(member.mobile, "010-1234-5678"); sprintf(member.phone, "02-111-2222"); sprintf(member.zip1, "123-456"); sprintf(member.address1, "서울 마포구"); sprintf(member.zip2, "456-789"); sprintf(member.address2, "서울 종로구"); sprintf(member.birthday, "2000-01-01"); sprintf(member.joindate, "2018-02-01"); printf("회원정보 아이디 : %s\n", member.id); printf("회원정보 이름 : %s\n", member.name); printf("회원정보 모바일 : %s\n", member.mobile); printf("회원정보 연락처 : %s\n", member.phone); printf("회원정보 가입일 : %s\n", member.joindate); system("PAUSE"); } | cs |
-제품구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME 50 struct Item { char name[MAX_NAME]; int price; int num; }; int main(int argc, char *argv[]) { int i; int count, sum = 0, total; struct Item *item = NULL; printf("항목의 갯수를 입력하세요."); scanf("%d", &count); item = (struct Item *)malloc(count * sizeof(item)); for (i = 0; i<count; i++) { printf("\n품명: "); scanf("%s", &item[i].name); printf("\n단가: "); scanf("%d", &item[i].price); printf("\n수량: "); scanf("%d", &item[i].num); } // for end printf("\n-------------------------------------\n"); printf("품명\t단가\t수량\n"); printf("-------------------------------------\n"); for (i = 0; i<count; i++) { printf("%s\t", item[i].name); printf("%d\t", item[i].price); printf("%d\n", item[i].num); sum += (item[i].price * item[i].num); } free(item); total = (int)(sum * 1.1); printf("\n-------------------------------------\n"); printf("합계:%d\n", sum); printf("총액: %d (부가세 10%%포함)\n", total); system("PAUSE"); return 0; } | cs |
-성적구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define MAX_NAME 20 #define SUBJECTS 3 struct Grade { char name[MAX_NAME]; // 이름 int score[SUBJECTS]; // 점수 int total; // 총점 double average; // 평균 }; int main(void) { int students, i, j; struct Grade *grade; char *subject[SUBJECTS] = { "국어", "영어", "수학" }; ///////////////////////////////////////////////////////// // 학생 수 입력 및 메모리 할당 printf("성적처리 할 학생 수를 입력하세요: "); scanf("%d", &students); grade = (struct Grade *)malloc(students*sizeof(struct Grade)); ///////////////////////////////////////////////////////// // 성적 입력 for (i = 0; i<students; i++) { printf("**************** %d번째 학생 ****************\n", i + 1); printf("이름: "); scanf("%s", grade[i].name); for (j = 0; j<SUBJECTS; j++) { printf("%s: ", subject[j]); scanf("%d", &grade[i].score[j]); } } ///////////////////////////////////////////////////////// // 성적 계산 for (i = 0; i<students; i++) { grade[i].total = 0; for (j = 0; j<SUBJECTS; j++) { grade[i].total += grade[i].score[j]; } grade[i].average = (double)grade[i].total / SUBJECTS; } ///////////////////////////////////////////////////////// // 성적 출력 printf("--------------------------------------------------\n"); printf("이름\t| 국어\t| 영어\t| 수학\t| 총점\t| 평균\n"); printf("--------------------------------------------------\n"); for (i = 0; i<students; i++) { printf("%s\t| ", grade[i].name); for (j = 0; j<SUBJECTS; j++) { printf("%d\t| ", grade[i].score[j]); } printf("%d\t| ", grade[i].total); printf("%0.2f\n", grade[i].average); } printf("--------------------------------------------------\n"); free(grade); // 메모리 반납 system("PAUSE"); return 0; } | cs |
'스터디 > C,C++' 카테고리의 다른 글
C 문자열 거꾸로 출력하기 (8) | 2018.02.12 |
---|---|
C 문자열 자르기 문제 (7) | 2018.02.12 |
배열포인터활용 성적구하기 (7) | 2018.01.31 |
중첩반복문 별찍기 (7) | 2018.01.26 |
C실행툴 DEV-C++ 설치 (5) | 2018.01.22 |