쉽게 풀어 쓴 C 언어 Express 13 장 | 실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / Sbs 상위 191개 답변

당신은 주제를 찾고 있습니까 “쉽게 풀어 쓴 c 언어 express 13 장 – 실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / SBS“? 다음 카테고리의 웹사이트 th.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: th.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 SBS 뉴스 이(가) 작성한 기사에는 조회수 1,552회 및 좋아요 32개 개의 좋아요가 있습니다.

Table of Contents

쉽게 풀어 쓴 c 언어 express 13 장 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / SBS – 쉽게 풀어 쓴 c 언어 express 13 장 주제에 대한 세부정보를 참조하세요

다음 주 월요일부터는 야외에서 열리는 운동경기나 공연을 보더라도, 마스크를 쓰지 않아도 됩니다. 우리 국민의 97%가 항체를 보유한 걸로 나타났는데, 1천만 명가량은 진단을 받지 않은, 이른바 숨은 감염자로 추정됩니다.
최호원 기자입니다.
더 자세한 정보 보기
https://news.sbs.co.kr/y/?id=N1006907998

#SBS뉴스 #항체 #마스크 #공연 #스포츠
▶SBS 뉴스 채널 구독하기 : https://n.sbs.co.kr/youtube
▶SBS 뉴스 라이브 : https://n.sbs.co.kr/youtubeLive , https://n.sbs.co.kr/live
▶SBS 뉴스 제보하기
홈페이지: https://n.sbs.co.kr/inform
애플리케이션: ‘SBS뉴스’ 앱 설치하고 제보 – https://n.sbs.co.kr/App
카카오톡: ‘SBS뉴스’와 친구 맺고 채팅 – https://pf.kakao.com/_ewsdq/chat
페이스북: ‘SBS뉴스’ 메시지 전송 – https://www.facebook.com/sbs8news
이메일: [email protected]
문자: #6000
전화: 02-2113-6000
홈페이지: https://news.sbs.co.kr/
페이스북: https://www.facebook.com/sbs8news
트위터: https://www.twitter.com/sbs8news
카카오톡: https://pf.kakao.com/_ewsdq
인스타그램: https://www.instagram.com/sbsnews

쉽게 풀어 쓴 c 언어 express 13 장 주제에 대한 자세한 내용은 여기를 참조하세요.

쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설 – 문풀이

쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설 쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설 1. (a) #include struct point { int …

+ 여기에 자세히 보기

Source: tistorysolution.tistory.com

Date Published: 11/6/2021

View: 8272

쉽게 풀어쓴 C언어 Express 13장 Programming

쉽게 풀어쓴 C언어 Express 13장 Programming. 얼음꿀차 2018. 11. 27. 18:31. 13장 Programming. 1. #include . struct point{. int x, y;. };.

+ 여기에 표시

Source: readbookbehappy.tistory.com

Date Published: 1/5/2021

View: 7363

쉽게 풀어쓴 C언어 express 연습문제 13장/ 17장(일부)

13-07 공용체에서는 모든 멤버를 한꺼번에 초기화할 수 없기 때문이다. ​. 13-08. (a). struct book{. char title …

+ 여기에 자세히 보기

Source: blog.naver.com

Date Published: 11/10/2022

View: 6029

[쉽게 풀어 쓴 C언어 Express] 13장 프로그래밍 솔루션 답지

[쉽게 풀어 쓴 C언어 Express] 13장 프로그래밍 솔루션 답지. 이얏호이야호 2020. 4. 11. 20:30. 1. (a). #include . struct point {. int x, y;. }.

+ 여기를 클릭

Source: chuinggun.tistory.com

Date Published: 3/8/2021

View: 6754

제13장 구조체 – 쉽게 풀어쓴 C언어 Express

struct 태그 {. 자료형. 멤버1;. 자료형. 멤버2; … }; • 구조체 선언 형식. Page 9. © 2012 생능출판사 All rights …

+ 여기에 보기

Source: web.yonsei.ac.kr

Date Published: 10/5/2021

View: 1040

쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.

이번 장에서 학습할 내용 구조체는 서로 다른 데이터들을 하나로 묶는 중요한 도구 … Presentation on theme: “쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.

+ 여기를 클릭

Source: slidesplayer.org

Date Published: 6/12/2021

View: 4752

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C언어 Express. C Express. 제13장 구조체 … 13. 컴퓨터 프로그래밍 기초. 구조체 배열. 구조체 배열의 초기화. struct student {. int number;.

+ 여기에 표시

Source: cs.kangwon.ac.kr

Date Published: 12/9/2022

View: 8650

제13장 구조체

교재: 쉽게 풀어쓴 C언어 Express, 천인국 지음. 제13장 구조체. 13.1 단일 구조체. – 구조체(structure) : 자료형이 다른 변수들의 집합체 (배열화).

+ 여기에 표시

Source: contents2.kocw.or.kr

Date Published: 12/10/2022

View: 4615

주제와 관련된 이미지 쉽게 풀어 쓴 c 언어 express 13 장

주제와 관련된 더 많은 사진을 참조하십시오 실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / SBS. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

실외 마스크 전면 해제…\
실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / SBS

주제에 대한 기사 평가 쉽게 풀어 쓴 c 언어 express 13 장

  • Author: SBS 뉴스
  • Views: 조회수 1,552회
  • Likes: 좋아요 32개
  • Date Published: 2022. 9. 23.
  • Video Url link: https://www.youtube.com/watch?v=NUsHg3JIQVc

쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설

반응형

728×170

쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설

쉽게 풀어 쓴 C언어 Express 13장 프로그래밍 문제 해설

1.

(a)

#include struct point { int x, y; } ; int equal(struct point p1, struct point p2); int main(void) { struct point p1= { 1, 2 } ; struct point p2= { 3, 5 } ; printf(“일치 여부 = %d

“, equal(p1, p2)); return 0; } int equal(struct point p1, struct point p2) { if( p1.x == p2.x && p1.y == p2.y ) return 1; else return 0; }

(b)

#include struct point { int x, y; } ; int quadrant(struct point p); int main(void) { struct point p= { -1, 2 } ; printf(“사분면 = %d

“, quadrant(p)); return 0; } int quadrant(struct point p) { if( p.x > 0 && p.y > 0 ) return 1; else if( p.x < 0 && p.y > 0 ) return 2; else if( p.x < 0 && p.y < 0 ) return 3; else return 4; } 2. (a) #include struct point { int x, y; } ; int equal(struct point *p1, struct point *p2); int main(void) { struct point p1= { 1, 2 } ; struct point p2= { 3, 5 } ; printf(“일치 여부 = %d

“, equal(&p1, &p2)); return 0; } int equal(struct point *p1, struct point *p2) { if( p1->x == p2->x && p1->y == p2->y ) return 1; else return 0; }

(b)

#include struct point { int x, y; } ; int quadrant(struct point *p); int main(void) { struct point p= { -1, 2 } ; printf(“사분면 = %d

“, quadrant(&p)); return 0; } int quadrant(struct point *p) { if( p->x > 0 && p->y > 0 ) return 1; else if( p->x < 0 && p->y > 0 ) return 2; else if( p->x < 0 && p->y < 0 ) return 3; else return 4; } 3. #include #include struct point { int x, y; } ; struct rectangle { struct point a, b; // a는 오른쪽 상단, b는 왼쪽 하단을 나타낸다. } ; int area(struct rectangle r); int perimeter(struct rectangle r); int is_square(struct rectangle r); int main(void) { struct point p1= { 1, 1 } ; struct point p2= { 2, 2 } ; struct rectangle r; r.a = p1; r.b = p2; printf(“%d

“, area(r)); printf(“%d

“, perimeter(r)); printf(“%d

“, is_square(r)); return 0; } int area(struct rectangle r) { return abs(r.a.x-r.b.x)*abs(r.a.y-r.b.y); } int perimeter(struct rectangle r) { return 2*(abs(r.a.x-r.b.x)+abs(r.a.y-r.b.y)); } int is_square(struct rectangle r) { return abs(r.a.x-r.b.x)==abs(r.a.y-r.b.y); }

4.

#include struct complex { double real; double imag; } ; struct complex add(struct complex c1, struct complex c2) { struct complex result; result.real = c1.real+c2.real; result.imag = c1.imag+c2.imag; return result; } struct complex sub(struct complex c1, struct complex c2) { struct complex result; result.real = c1.real+c2.real; result.imag = c1.imag+c2.imag; return result; } struct complex mul(struct complex c1, struct complex c2) { struct complex result; result.real = c1.real*c2.real-c1.imag*c2.imag; result.imag = c1.real*c2.imag+c1.imag*c2.real; return result; } void print(struct complex c) { printf(“%f+%fi

“, c.real,c.imag); } int main(void) { struct complex c1= { 1.0, 2.0 } ; struct complex c2= { 2.0, 3.0 } ; struct complex c3; c3= add(c1, c2); print(c3); return 1; }

5.

#include #include struct vector { double x; double y; } ; struct vector vector_add(struct vector v1, struct vector v2) { struct vector r; r.x = v1.x + v2.x; r.y = v1.y + v2.y; return r; } void vector_print(struct vector v) { printf(“(%f, %f)

“, v.x, v.y); } int main(void) { struct vector v1= { 1.0, 2.0 } ; struct vector v2= { 2.0, 3.0 } ; struct vector v3; v3 = vector_add(v1, v2); vector_print(v3); return 0; }

6.

#include #include struct email { char title[100]; char receiver[50]; char sender[50]; char content[1000]; char date[100]; int priority; } ; int main(void) { struct email e; strcpy(e.title, “안부 메일”); strcpy(e.receiver, “[email protected]”); strcpy(e.sender, “[email protected]”); strcpy(e.content, “안녕하십니까? 별일 없으신지요?”); strcpy(e.date, “2010/9/1”); e.priority = 1; return 0; }

7.

#include #include struct food { char name[100]; int calories; } ; int calc_total_calroies(struct food array[], int size); int main(void) { struct food food_array[3]= { { “hambuger”, 900 } , { “bulgogi”, 500 } , { “sushi”, 700 } } ; int total = calc_total_calroies(food_array, 3); printf(“%d

“, total); return 0; } int calc_total_calroies(struct food array[], int size) { int i, total=0; for (i=0;i #include // 직원 struct employee { int number; // 사번 char name[20]; // 이름 int age; // 나이 char tel[20]; // 전화번호 } ; int main(void) { struct employee e[10] = { { 1, “홍길동1”, 20, “111-1111” } , { 2, “홍길동2”, 25, “111-1112” } , { 3, “홍길동3”, 60, “111-1113” } , { 4, “홍길동4”, 40, “111-1114” } , { 5, “홍길동5”, 50, “111-1115” } , { 6, “홍길동6”, 45, “111-1116” } , { 7, “홍길동7”, 32, “111-1117” } , { 8, “홍길동8”, 23, “111-1118” } , { 9, “홍길동9”, 29, “111-1119” } , { 10, “홍길동10”, 62, “111-1120” } } ; int i; for (i=0;i<10;i++) if( e[i].age >= 20 && e[i].age <= 30 ) printf("%s ", e[i].name); return 0; } 9. #include #include struct contact { char name[100]; char home_phone[100]; char cell_phone[100]; } ; int main(void) { struct contact list[5]; int i; char name[100]; for (i=0;i<5;i++) { printf("이름을 입력하시오:"); scanf("%s", list[i].name); printf("집전화번호를 입력하시오:"); scanf("%s", list[i].home_phone); printf("휴대폰번호를 입력하시오:"); scanf("%s", list[i].cell_phone); } printf("검색할 이름을 입력하시오:"); scanf("%s", name); for (i=0;i<5;i++) { if( strcmp(name, list[i].name)==0 ) { printf("집전화번호: %s ", list[i].home_phone); printf("휴대폰번호: %s ", list[i].cell_phone); return 0; } } printf("검색이 실패하였슴 "); return 0; } 10. #include #include struct card { int value; char suit; } ; int main(void) { struct card cards[52]; int i; for (i=0;i<13;i++) { cards[i].value=i%13+1; cards[i].suit='c'; } for (i=0;i<13;i++) { cards[i+13].value=i%13+1; cards[i+13].suit='d'; } for (i=0;i<13;i++) { cards[i+26].value=i%13+1; cards[i+26].suit='h'; } for (i=0;i<13;i++) { cards[i+39].value=i%13+1; cards[i+39].suit='s'; } for (i=0;i<52;i++) { printf("%d:%c ", cards[i].value, cards[i].suit); } return 0; } 15. #include #include enum shape_type { TRIANGLE, RECTANGLE, CIRCLE } ; struct shape { int type; union { struct { int base, height; } tri; struct { int width, height; } rect; struct { int radius; } circ; } p; } ; int main(void) { struct shape s; enum shpae_type type; printf(“도형의 타입을 입력하시오(0, 1, 2): “); scanf(“%d”, &type); switch(type) { case TRIANGLE: printf(“밑변과 반지름을 입력하시오(예를 들어서 100 200): “); scanf(“%d %d”, &s.p.tri.base, &s.p.tri.height); printf(“면적은 %d

“, (int)(0.5*s.p.tri.base*s.p.tri.height)); break; case RECTANGLE: printf(“가로와 세로의 길이를 입력하시오(예를 들어서 100 200):”); scanf(“%d %d”, &s.p.rect.width, &s.p.rect.height); printf(“면적은 %d

“, (int)(s.p.rect.width*s.p.rect.height)); break; case CIRCLE: printf(“반지름을 입력하시오(예를 들어서 100): “); scanf(“%d”, &s.p.circ.radius); printf(“면적은 %d

“, (int)(3.14*s.p.circ.radius*s.p.circ.radius)); break; } return 0; }

18.

#include #include #define TITLE_SIZE 50 #define NAME_SIZE 50 #define LOCATION_SIZE 50 enum music_type { KPOP, POP, CLASSIC, SCREEN_MUSIC } ; typedef struct music { char title[TITLE_SIZE]; char singer[NAME_SIZE]; char location[LOCATION_SIZE]; enum music_type genre; } MUSIC; void add_record(MUSIC library[], int count); void menu(); int get_input(); void search_record(MUSIC library[], int count); void print_record(MUSIC library[], int count); int main(void) { int num, count = 0; MUSIC library[30] = { ‘\0’ } ; while(1) { menu(); num = get_input(); switch(num) { case 1: add_record(library, count); count++; continue; case 2: print_record(library, count); continue; case 3: search_record(library, count); continue; case 4: return -1; } return 0; } } void add_record(MUSIC library[], int count) { int type; fflush(stdin); printf(“제목:”); gets(library[count].title); printf(“가수:”); gets(library[count].singer); printf(“위치:”); gets(library[count].location); printf(“장르(0: 가요, 1: 팝, 2: 클래식, 3: 영화음악)”); scanf(“%d”,&type); if(type >= KPOP && type <= SCREEN_MUSIC) library[count].genre = type; else library[count].genre = KPOP; } void menu() { printf("==================== "); printf(" 1. 추가 "); printf(" 2. 출력 "); printf(" 3. 검색 "); printf(" 4. 종료 "); printf("==================== "); } int get_input() { int num; printf("정수값을 입력하시오 : "); scanf("%d",&num); return num; } void search_record(MUSIC library[], int count) { int i; char title[TITLE_SIZE]; fflush(stdin); printf("제목: "); gets(title); for (i = 0; i < count; i++) { if(strcmp(title,library[i].title) == 0) { printf("저장된 위치는 %s ",library[i].location); return; } } printf("찾는 음악이 테이블에 없습니다. "); } void print_record(MUSIC library[], int count) { int i; fflush(stdin); for (i = 0; i < count; i++) { printf("제목 : %s ",library[i].title); printf("가수 : %s ",library[i].singer); printf("위치 : %s ",library[i].location); if(library[i].genre == 0) printf("장르 : 가요 "); else if(library[i].genre == 1) printf("장르 : 팝 "); else if(library[i].genre == 2) printf("장르 : 클래식 "); else if(library[i].genre == 3) printf("장르 : 영화음악 "); } } 반응형 그리드형

책 알려주는 남자 :: 쉽게 풀어쓴 C언어 Express 13장 Programming

13장 Programming

1.

#include

struct point{

int x, y;

};

int equal (struct point p1, struct point p2){

if(p1.x==p2.x && p1.y==p2.y)

return 1;

return 0;

}

int quadrant(struct point p){

if(p.x>0 && p.y>0)

return 1;

else if(p.x<0 && p.y>0)

return 2;

else if(p.x<0 && p.y<0) return 3; else if(p.x>0 && p.y<0) return 4; } int main(){ struct point p1, p2; printf("점의 좌표를 입력하시오: "); scanf("%d,%d", &p1.x, &p1.y); printf("점의 좌표를 입력하시오: "); scanf("%d,%d", &p2.x, &p2.y); if(equal(p1, p2)==1) printf("두 점은 일치합니다 "); else printf("두 점은 일치하지 않습니다 "); printf("첫번째 점은 %d사분면에 있습니다 ", quadrant(p1)); printf("두번째 점은 %d사분면에 있습니다 ", quadrant(p2)); return 0; } 2. #include

struct point{

int x, y;

};

int equal (struct point *p1, struct point *p2){

if(p1->x==p2->x && p1->y==p2->y)

return 1;

return 0;

}

int quadrant(struct point *p){

if(p->x>0 && p->y>0)

return 1;

else if(p->x<0 && p->y>0)

return 2;

else if(p->x<0 && p->y<0) return 3; else if(p->x>0 && p->y<0) return 4; } int main(){ struct point p1, p2; printf("점의 좌표를 입력하시오: "); scanf("%d,%d", &p1.x, &p1.y); printf("점의 좌표를 입력하시오: "); scanf("%d,%d", &p2.x, &p2.y); if(equal(&p1, &p2)==1) printf("두 점은 일치합니다 "); else printf("두 점은 일치하지 않습니다 "); printf("첫번째 점은 %d사분면에 있습니다 ", quadrant(&p1)); printf("두번째 점은 %d사분면에 있습니다 ", quadrant(&p2)); return 0; } 3. #include

typedef struct {

int x, y;

} Point;

typedef struct {

Point a, b

} Rectangle;

int area(Rectangle r);

int perimeter(Rectangle r);

int is_square(Rectangle r);

void main(){

Rectangle r;

printf(“오른쪽 상단 점의 좌표: “);

scanf(“%d,%d”, &r.a.x, &r.a.y);

printf(“왼쪽 하단 점의 좌표: “);

scanf(“%d,%d”, &r.b.x, &r.b.y);

printf(“사각형의 넓이: %d

“, area(r));

printf(“사각형의 둘레: %d

“, perimeter(r));

if(is_square(r)==1)

printf(“정사각형입니다

“);

else

printf(“정사각형이 아닙니다

“);

}

int area(Rectangle r){

return (r.a.x-r.b.x)*(r.a.y-r.b.y);

}

int perimeter(Rectangle r){

return ((r.a.x-r.b.x)+(r.a.y-r.b.y))*2;

}

int is_square(Rectangle r){

if((r.a.x-r.b.x)==(r.a.y-r.b.y))

return 1;

return 0;

}

4.

#include

typedef struct {

double real;

double imag;

} Complex;

void add_complex(Complex x, Complex y);

void main(){

Complex x, y;

printf(“첫 번째 복소수의 실수부: “); scanf(“%lf”, &x.real);

printf(“첫 번째 복소수의 허수부: “); scanf(“%lf”, &x.imag);

printf(“두 번째 복소수의 실수부: “); scanf(“%lf”, &y.real);

printf(“두 번째 복소수의 허수부: “); scanf(“%lf”, &y.imag);

add_complex(x, y);

}

void add_complex(Complex x, Complex y){

printf(“합의 실수부: %lf

“, x.real+y.real);

printf(“합의 허수부: %lf

“, x.imag+y.imag);

}

5.

#include

typedef struct{

double x, y;

} Vector;

void add_vector(Vector v1, Vector v2);

void main(){

Vector v1, v2;

printf(“벡터 a의 좌표: “);

scanf(“%lf,%lf”, &v1.x, &v1.y);

printf(“벡터 b의 좌표: “);

scanf(“%lf,%lf”, &v2.x, &v2.y);

add_vector(v1, v2);

}

void add_vector(Vector v1, Vector v2){

printf(“벡터 a+b = (%0.2lf,%0.2lf)”, v1.x+v2.x, v1.y+v2.y);

}

6.

#include

typedef struct {

char title[30];

char toname[20];

char byname[20];

char text[100];

char date[20];

int primary;

} Email;

void main(){

Email x;

printf(“제목: “);

gets(x.title);

printf(“수신자: “);

gets(x.toname);

printf(“발신자: “);

gets(x.byname);

printf(“본문: “);

gets(x.text);

printf(“보낸날짜(yymmdd): “);

gets(x.date);

printf(“우선순위: “);

scanf(“%d”, &x.primary);

}

7.

#include

typedef struct{

char name[100];

int calories;

} Food;

void add_calories(Food info[], int count);

void main(){

Food info[10];

int i=0, count=0;

char an;

while(1){

printf(“음식정보를 저장하시겠습니까?(y/n)”);

scanf(“%c”, &an);

fflush(stdin);

if(an==’n’)

break;

printf(“음식이름: “);

gets(info[i].name);

printf(“칼로리: “);

scanf(“%d”, &info[i].calories);

fflush(stdin);

i++;

count++;

}

add_calories(info, count);

}

void add_calories(Food info[], int count){

int i, sum=0;

for(i=0; i

typedef struct{

int id_number;

char name[20];

int ph_number;

int age;

} Employee;

void main(){

Employee people[10];

int i, count=0;

for(i=0; i<10; i++){ printf("%d번째 직원정보 ", i+1); printf("사원번호: "); scanf("%d", &people[i].id_number); fflush(stdin); printf("이름: "); gets(people[i].name); printf("전화번호: "); scanf("%d", &people[i].ph_number); printf("나이: "); scanf("%d", &people[i].age); } printf(" "); printf("나이가 20이상 30이하인 직원 "); for(i=0; i<10; i++){ if(people[i].age>=20 && people[i].age<=30){ puts(people[i].name); count++; } } printf("해당 총인원: %d명 ", count); } 9. #include

#include

typedef struct {

char name[20];

char homeNum[20];

char phoneNum[20];

} Book;

void main() {

Book number[5];

char search[20];

int i;

char an;

for(i=0; i<5; i++) { printf("%d번째 전화번호부 ", i+1); printf("이 름 : "); gets(number[i].name); printf("자택번호 : "); gets(number[i].homeNum); printf("휴대전화 : "); gets(number[i].phoneNum); } printf(" "); do { printf("이름을 검색하시오 : "); gets(search); for(i=0; i<5; i++) { if(strcmp(search, number[i].name) == 0) { printf("자택번호 : %s ", number[i].homeNum); printf("휴대전화 : %s ", number[i].phoneNum); printf(" "); } } printf("계속 찾으시겠습니까?(y/n) : "); scanf("%c", &an); fflush(stdin); } while(an != 'n'); } 10. #include

#include

#include

#define SIZE 52

typedef struct {

int value;

char suit;

} Card;

void init_card(Card pack[], char shape[]);

void print_card(Card pack[], int size);

void shuf_card(Card pack[], int size);

void main(){

Card pack[SIZE];

char shape[]={‘c’, ‘d’, ‘h’, ‘s’};

init_card(pack, shape);

printf(“카드가 초기화 되었습니다.

“);

print_card(pack, SIZE);

printf(”

“);

shuf_card(pack, SIZE);

printf(“카드를 섞었습니다.

“);

print_card(pack, SIZE);

printf(”

“);

}

void init_card(Card pack[], char shape[]){

int i, j, count=0;

for(i=0; i<4; i++){ for(j=0; j<13; j++){ pack[count].value=j+1; pack[count].suit=shape[i]; count++; } } } void print_card(Card pack[], int size){ int i, j; for(i=0; i

#define PI 3.14

#define SIZE 10

typedef struct {

int type;

union {

struct { double base, height; } tri;

struct { double width, height; } rect;

struct { double radius; } circ;

} shape;

} Figure;

void main(){

Figure data[SIZE];

int i=0;

char an;

do{

printf(“저장하려는 도형의 종류를 입력하시오(0=삼각형, 1=사각형, 2=원): “);

scanf(“%d”, &data[i].type);

fflush(stdin);

switch(data[i].type){

case 0 :

printf(“삼각형의 밑변: “); scanf(“%lf”, &data[i].shape.tri.base);

printf(“삼각형의 높이: “); scanf(“%lf”, &data[i].shape.tri.height);

i++;

break;

case 1 :

printf(“사각형의 밑변: “); scanf(“%lf”, &data[i].shape.rect.width);

printf(“사각형의 높이: “); scanf(“%lf”, &data[i].shape.rect.height);

i++;

break;

case 2 :

printf(“원의 반지름: “); scanf(“%lf”, &data[i].shape.circ.radius);

i++;

break;

default:

printf(“숫자를 0~2사이 값을 입력하시오

“);

}

fflush(stdin);

printf(“더 저장하시겠습니까?(y/n)

“);

scanf(“%c”, &an);

} while(an!=’n’);

}

12.

#include

#include

#define SIZE 20

typedef struct {

char title[20];

char singer[20];

int class;

} Music;

int i;

int num[SIZE]={0};

void add_music (Music* list);

void print_music (Music* list);

void search_music (Music* list, int size);

void delete_music (Music* list);

void main(){

Music list[SIZE];

int n, result=1;

printf(“======================

“);

printf(” 1. 추가(ADD)

“);

printf(” 2. 출력(PRINT)

“);

printf(” 3. 검색(SEARCH)

“);

printf(” 4. 삭제(DELETE)

“);

printf(” 5. 종료(EXIT)

“);

printf(“======================

“);

while(result==1){

printf(“메뉴를 선택하시오: “);

scanf(“%d”, &n);

fflush(stdin);

switch(n) {

case 1:

add_music(list);

break;

case 2:

print_music(list);

break;

case 3:

search_music(list, SIZE);

break;

case 4:

delete_music(list);

break;

case 5:

result=0;

}

}

}

void add_music(Music* list){

do{

printf(“1번부터 %d번까지 트랙이 있습니다. 몇 번 트랙에 저장하시겠습니까?”, SIZE);

scanf(“%d”, &i);

fflush(stdin);

if(num[i-1]==1)

printf(“이미 저장되어있는 트랙입니다. 다른 트랙번호를 입력하시오

“);

} while(num[i-1]==1);

printf(“제목: “); gets(list[i-1].title);

printf(“가수: “); gets(list[i-1].singer);

printf(“종류(팝=0, 재즈=1, 클래식=2, 락=3): “); scanf(“%d”,&list[i-1].class);

fflush(stdin);

num[i-1]=1;

printf(”

“);

}

void print_music(Music* list){

do{

printf(“몇 번 트랙의 음악정보를 출력하시겠습니까? “);

scanf(“%d”, &i);

if(num[i-1]==0)

printf(“해당 트랙엔 저장된 음악정보가 없습니다. 다른 트랙번호를 입력하시오

“);

} while(num[i-1]==0);

printf(“제목: %s

“, list[i-1].title);

printf(“가수: %s

“, list[i-1].singer);

switch(list[i-1].class){

case 0: printf(“종류: 팝

“); break;

case 1: printf(“종류: 재즈

“); break;

case 2: printf(“종류: 클래식

“); break;

case 3: printf(“종류: 락

“); break;

}

printf(”

“);

}

void search_music(Music* list, int size){

char searchName[20];

printf(“검색하고자 하는 노래 제목을 입력하시오: “);

gets(searchName);

for(i=0; i

쉽게 풀어쓴 C언어 express 연습문제 13장/ 17장(일부)

[Exercise]

13-01

struct Customer{

char name[20];

int num;

long mi;

}

struct Customer c1;

13-02

(a) F

(b) F

(c) T

(d) F

(e) T

13-03 (2)

13-04 (1), (3)

13-05 0, 3, 4, 5, 9

13-06 (1), (3), (6), (7), (8)

13-07 공용체에서는 모든 멤버를 한꺼번에 초기화할 수 없기 때문이다.

13-08

(a)

struct book{

char title[30];

int pub_date;

int pages;

int price;

}

(b)

struct friend{

char name[30];

int age;

double height;

}

(c)

struct part{

char name[20];

int num;

int price;

}

13-09

(a) enum primary_color { r, g, b };

(b) enum months { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };

13-10

(a)

struct book b;

b.pages=512;

(b)

struct book{

char title[50];

int pages;

};

struct book abook = {“Data Structures”, 577};

(c) typedef enum color { red=1, green, blue };

(d)

struct fration {

int num;

int den;

} s = {3, 5};

struct fration p;

p=&s;

17-01 (3)

17-02

char *p;

p=(char *)malloc(100);

printf(“텍스트를 입력하시오: “);

gets(p);

printf(“입력된 텍스트는 %s입니다.

”, p);

17-03

(a) malloc(), free()

(b) void *

(c) size_t

17-04

(a)

int *pi;

pi = (int *)malloc(sizeof(int)*10);

(b)

char *pi;

pi = (char *)calloc(10, sizeof(char));

(c)

char *pc;

pc = (char *)malloc(10*sizeof(char));

17-05

(a)

double *p;

p=(double *)malloc(sizeof(double));

*p=3.14;

(b)

int *p;

p = (int *)malloc(sizeof(int)*5);

p[0] = 1;

p[1] = 2;

p[2] = 3;

p[3] = 4;

p[4] = 5;

[Programming]

문제 13-1) 책을 나타내는 구조체 book을 선언해서 사용해보자. 책은 id, title, author를 가지고 있다고 가정한다. {1, “바람과 함께 사라지다”, “마가렛 미첼”의 값을 가지는 구조체 변수를 생성했다가 다시 화면에 출력해보자.

#include

#include

typedef struct book {

int id;

char title[100];

char author[20];

}book;

int main() {

book b = { 1,”바람과 함께 사라지다”,”마가렛 미첼” };

printf(“{ %d, %s, %s }”, b.id, b.title, b.author);

}

문제 13-2) 은행계좌를 나타내는 구조체 account를 선언해서 사용해보자. 계좌는 계좌번호, 이름, 잔액 등의 정보를 가지고 있다고 하자. {1, “홍길동”, 100000}의 값을 가지는 구조체 변수를 생성했다가 다시 화면에 출력해보자.

#include

#include

typedef struct account {

int number;

char name[20];

int balance;

}account;

int main() {

account acc = { 1,”홍길동”,100000};

printf(“{ %d, %s, %d }”, acc.number, acc.name, acc.balance);

}

문제 13-3) 구조체를 이용하여 이메일을 표현할 수 있는 구조체를 정의하고, 적당한 초기값을 부여하고 출력하는 프로그램을 작성하라. 구조체의 멤버는 제목, 수신자, 발신자, 내용, 날짜, 우선순위 등으로 구성된다.

#include

#include

typedef struct email {

char title[20];

char receiver[30];

char sender[30];

char content[100];

char date[10];

int pri;

}email;

int main() {

email e = { “안부 메일”,”[email protected]”,”[email protected]”,”안녕하십니까? 별일 없으신지요?”

, “2010/9/1”,1 };

printf(“제목: %s

수신자: %s

발신자: %s

내용: %s

날짜: %s

우선순위: %d

“, e.title, e.receiver, e.sender, e.content, e.date, e.pri);

}

문제 13-4) 구조체를 이용하여 복소수를 다음과 같이 정의하고 복소수의 덧셈을 수행하는 함수를 작성하고 테스트하라.

#include

#include

typedef struct complex {

double real;

double imag;

}complex;

complex complex_add(complex c1, complex c2) {

complex c3;

c3.real = c1.real + c2.real;

c3.imag = c1.imag + c2.imag;

return c3;

}

int main() {

complex c1, c2, c3;

c1.real = 1;

c1.imag = 2;

c2.real = 2;

c2.imag = 3;

c3 = complex_add(c1, c2);

printf(“%lf+%lfi

“, c1.real, c1.imag);

printf(“%lf+%lfi

“, c2.real, c2.imag);

printf(“%lf+%lfi

“, c3.real, c3.imag);

}

문제 13-5) 2차원 평면에서 점은 (x,y) 좌표로 나타낼 수 있다. 따라서 하나의 점은 다음과 같은 point라는 구조체로 정의할 수 있다. 이 point 구조체를 받아서 두 점의 좌표가 일치하면 1을 반환하고 그렇지 않으면 0을 반환하는 함수 int equal(struct point p1, struct point p2)를 작성하고 테스트하라.

#include

#include

typedef struct point {

int x, y;

}point;

int equal(point p1, point p2) {

if (p1.x == p2.x && p1.y == p2.y)

return 1;

else return 0;

}

int main() {

int res;

point p1, p2;

p1.x = 1, p1.y = 2;

p2.x = 3, p2.y = 5;

res = equal(p1, p2);

if (res == 1)

printf(“(%d, %d) == (%d, %d)”, p1.x, p1.y, p2.x ,p2.y);

else

printf(“(%d, %d) != (%d, %d)”, p1.x, p1.y, p2.x, p2.y);

}

문제 13-6) 앞의 문제에서 equal()함수를 다음과 같이 구조체의 포인터를 받도록 변경하여서 작성하고 테스트하라.

#include

#include

typedef struct point {

int x, y;

}point;

int equal(point *p1, point *p2) {

if (p1->x == p2->x && p1->y == p2->y)

return 1;

else return 0;

}

int main() {

int res;

point pp1, pp2;

point *p1 = &pp1;

point *p2 = &pp2;

pp1.x = 1, pp1.y = 2;

pp2.x = 3, pp2.y = 5;

res = equal(p1, p2);

if (res == 1)

printf(“(%d, %d) == (%d, %d)”, p1->x, p1->y, p2->x ,p2->y);

else

printf(“(%d, %d) != (%d, %d)”, p1->x, p1->y, p2->x, p2->y);

}

문제 13-7) 2차원 공간에 있는 점의 좌표를 받아서 이 점이 속하는 사분면의 번호를 반환하는 함수 int quadrant(struct point p)를 작성하고 테스트하라. 앞의 point 구조체를 사용한다.

#include

#include

typedef struct point {

int x, y;

}point;

int quadrant(point p) {

if (p.x > 0 && p.y > 0) return 1;

else if (p.x < 0 && p.y > 0) return 2;

else if (p.x < 0 && p.y < 0) return 3; else if (p.x > 0 && p.y < 0) return 4; } int main() { int res; point p; p.x = -1, p.y = 2; res = quadrant(p); printf("(%d, %d)의 사분면 = %d", p.x, p.y, res); } ​ ​ 문제 13-8) 원의 중심을 나타내는데 point 구조체를 사용할 수 있다. 원을 나타내는 circle 구조체를 정의하라. 이 circle 구조체를 받아서 다음과 같은 기능을 하는 함수를 작성하고 테스트하라. ​ (a) 원의 면적을 계산하는 함수 double area(struct circle c) ​ (b) 원의 둘레를 계산하는 함수 double perimeter(struct circle c) ​ (c) typedef을 사용하여 struct circle을 CIRCLE로 정의한 후에 (a)와 (b)를 다시 작성해보자. ​ #include

#include

struct point {

int x, y;

};

struct circle {

struct point center;

double radius;

};

double area(struct circle c) {

return c.radius*c.radius*3.14;

}

double perimeter(struct circle c) {

return c.radius*2*3.14;

}

int main() {

struct circle c;

c.center = { 0,0 };

c.radius = 10;

printf(“원의 중심점: %d %d

“, c.center.x, c.center.y);

printf(“원의 반지름: %.0lf

“, c.radius);

printf(“원의 면적=%lf, 원의 둘레=%lf

“,area(c),perimeter(c));

}

#include

#include

struct point {

int x, y;

};

typedef struct circle {

struct point center;

double radius;

}CIRCLE;

double area(CIRCLE c) {

return c.radius*c.radius*3.14;

}

double perimeter(CIRCLE c) {

return c.radius*2*3.14;

}

int main() {

CIRCLE c;

c.center = { 0,0 };

c.radius = 10;

printf(“원의 중심점: %d %d

“, c.center.x, c.center.y);

printf(“원의 반지름: %.0lf

“, c.radius);

printf(“원의 면적=%lf, 원의 둘레=%lf

“,area(c),perimeter(c));

}

문제 13-9) 각각의 음식에 대하여 음식의 이름, 칼로리 정보를 구조체로 표현한다. 사용자가 하루 동안 먹은 음식들을 입력받아 구조체의 배열에 저장하고 하루 동안 먹은 음식의 칼로리를 계산하는 프로그램을 작성하라.

#include

#include

struct food {

char name[20];

int calories;

};

int main() {

int sum = 0;

struct food food_array[3];

food_array[0] = { “피자”,1000 };

food_array[1] = { “치킨”,500 };

food_array[2] = { “떡볶이”,600 };

for (int i = 0; i < 3; i++) { sum += food_array[i].calories; } printf("총 칼로리=%d", sum); } ​ ​ ​ 문제 13-10) 직원을 나타내는 구조체 employee가 사번, 이름, 전화번호, 나이 등으로 구성된다. 구조체의 배열을 선언하고 10명의 데이터로 초기화하라. 이중에서 나이가 20이상 30이하인 직원을 찾아서 출력하도록 하라. typedef을 사용하여서 구조체 타입을 정의해서 사용하라. #include

#include

typedef struct employee {

int n;

char name[20];

char phone[20];

int age;

}employee;

int main() {

employee e[10];

e[0] = { 1,”홍길동1″,”111″,20 };

e[1] = { 2,”홍길동2″,”112″,21};

e[2] = { 3,”홍길동3″,”113″,32 };

e[3] = { 4,”홍길동4″,”114″,23 };

e[4] = { 5,”홍길동5″,”115″,34 };

e[5] = { 6,”홍길동6″,”116″,25 };

e[6] = { 7,”홍길동7″,”117″,26 };

e[7] = { 8,”홍길동8″,”118″,37 };

e[8] = { 9,”홍길동9″,”119″,28 };

e[9] = { 10,”홍길동10″,”110″,39 };

for (int i = 0; i < 10; i++) { if (e[i].age >= 20 && e[i].age <= 30) { printf("이름=%s 나이=%d ", e[i].name, e[i].age); } } } ​ ​ 문제 13-11) 전화번호부를 구성하기 위하여 이름, 전화번호, 휴대폰 번호로 구성되는 구조체를 정의한 후에 이 구조체의 배열을 선언하여 전화번호부를 구성한다. 3명의 데이터를 사용자로부터 받아서 저장하여 보라. 사용자로부터 이름을 입력받아서 전화번호를 검색하는 프로그램을 작성하라. ​ #include

#include

#include

typedef struct phbook {

char name[20];

char num1[20];

char num2[20];

}phbook;

int main() {

char ch[20];

phbook ph[3];

for (int i = 0; i < 3; i++) { printf("이름을 입력하시오: "); scanf("%s", &ph[i].name); printf("집전화번호를 입력하시오: "); scanf("%s", &ph[i].num1); printf("휴대폰번호를 입력하시오: "); scanf("%s", &ph[i].num2); } printf("검색할 이름을 입력하시오: "); getchar(); gets_s(ch, 20); for (int i = 0; i < 3; i++) { if(strcmp(ch,ph[i].name)==0) printf("집전화번호: %s 휴대폰번호: %s",ph[i].num1,ph[i].num2); } } ​ ​ ​ 문제 13-12) 포커 게임에 사용되는 카드를 구조체 card로 정의하고 52개의 카드를 구조체의 배열로 나타내라. 52개의 카드를 적절한 값으로 초기화하고 값들을 출력하는 프로그램을 작성하라. card 구조체는 다음과 같은 멤버값을 가진다고 가정하라. 먼저 카드의 수는 정수로 표현되며 멤버의 이름은 value라고 하라. value는 1부터 13까지의 값을 가질 수 있다. 카드의 타입은 하나의 문자로 표현되며 멤버의 이름은 suit라고 하라. suit는 ‘c’, ‘d’, ‘h’, ‘s’의 값을 가질 수 있다. ​ #include

#include

#include

typedef struct card {

int value;

char suit;

}card;

int main() {

card c[52];

for (int i = 0; i < 13; i++) { c[i].suit = 'c'; c[i].value = i + 1; } for (int i = 0; i < 13; i++) { c[i+13].suit = 'd'; c[i+13].value = i + 1; } for (int i = 0; i < 13; i++) { c[i + 26].suit = 'h'; c[i + 26].value = i + 1; } for (int i = 0; i < 13; i++) { c[i + 39].suit = 's'; c[i + 39].value = i + 1; } for (int i = 0; i < 52; i++) { printf("%d:%c ", c[i].value, c[i].suit); } } ​ ​ ​ ​ 문제 17-1) 동적 메모리 할당을 이용하여서 사용자로부터 양의 정수들의 합을 구하는 프로그램을 작성하라 사용자로부터 먼저 정수의 개수를 입력받도록 하라. ​ #include

#include

int main() {

int n;

int *k, sum = 0;

printf(“정수의 개수: “);

scanf(“%d”, &n);

k = (int *)malloc(sizeof(int)*n);

for (int i = 0; i < n; i++) { printf("양의 정수를 입력하시오: "); scanf("%d", &k[i]); sum += k[i]; } printf("합은 %d입니다.", sum); } ​ ​ ​ ​ 문제 17-2) 길이가 100인 n개의 문자열을 저장하는데 필요한 동적 메모리를 할당해보자. ​ #include

#include

int main() {

int n;

printf(“문자열의 개수: “);

scanf(“%d”, &n);

char **A = NULL;

printf(“[ “);

if ((A = (char **)malloc(n * sizeof(char *))) != NULL) {

for (int i = 0; i < n; i++) { A[i] = (char *)malloc(100); printf("\"문자열%d\" ", i); } } printf("] "); } ​ ​ ​ ​ 문제 17-3) 동적 메모리 할당을 이용하여서 사용자로부터 받은 주소록을 저장하고 출력하는 프로그램을 작성하라. 사용자로부터 먼저 주소의 개수를 입력받도록 하라. 주소의 많은 정보 중에서 이름과 휴대폰 번호만을 저장하도록 하자. ​ #include

#include

typedef struct Address {

char name[20];

char phone[20];

}Address;

int main() {

int n;

Address *add;

printf(“주소의 개수: “);

scanf(“%d”, &n);

getchar();

add = (Address *)malloc(sizeof(Address)*n);

for (int i = 0; i < n; i++) { printf("이름을 입력하시오: "); gets_s(add[i].name,20); printf("휴대폰 번호를 입력하시오: "); gets_s(add[i].phone, 20); } printf("============================== "); printf("이름 휴대폰 번호 "); printf("============================== "); for (int i = 0; i < n; i++) { printf("%s %s", add[i].name, add[i].phone); } } ​ ​ ​ 문제 17-4) 사용자로부터 단어를 입력받는 공간을 동적 메모리로 할당받아 보자. 단어의 최대 크기는 50이라고 가정한다. 단어의 주소를 반환하는 함수 char *get_word()를 작성하고 테스트한다. ​ #include

#include

char *get_word() {

char *s = (char *)malloc(sizeof(char)*50);

if (s == NULL) {

printf(“메모리 할당 오류

“);

exit(1);

}

printf(“단어를 입력하시오(최대 50글자): “);

scanf(“%s”, s);

return s;

}

int main() {

char *c = get_word();

printf(“동적 메모리에 저장된 단어는 %s 입니다.”, c);

}

[쉽게 풀어 쓴 C언어 Express] 13장 프로그래밍 솔루션 답지

1.

(a)

#include

struct point {

int x, y;

}

;

int equal(struct point p1, struct point p2);

int main(void) {

struct point p1= {

1, 2

}

;

struct point p2= {

3, 5

}

;

printf(“일치 여부 = %d

“, equal(p1, p2));

return 0;

}

int equal(struct point p1, struct point p2) {

if( p1.x == p2.x && p1.y == p2.y ) return 1; else return 0;

}

(b)

#include

struct point {

int x, y;

}

;

int quadrant(struct point p);

int main(void) {

struct point p= {

-1, 2

}

;

printf(“사분면 = %d

“, quadrant(p));

return 0;

}

int quadrant(struct point p) {

if( p.x > 0 && p.y > 0 ) return 1; else if( p.x < 0 && p.y > 0 ) return 2; else if( p.x < 0 && p.y < 0 ) return 3; else return 4; } 2. (a) #include

struct point {

int x, y;

}

;

int equal(struct point *p1, struct point *p2);

int main(void) {

struct point p1= {

1, 2

}

;

struct point p2= {

3, 5

}

;

printf(“일치 여부 = %d

“, equal(&p1, &p2));

return 0;

}

int equal(struct point *p1, struct point *p2) {

if( p1->x == p2->x && p1->y == p2->y ) return 1; else return 0;

}

(b)

#include

struct point {

int x, y;

}

;

int quadrant(struct point *p);

int main(void) {

struct point p= {

-1, 2

}

;

printf(“사분면 = %d

“, quadrant(&p));

return 0;

}

int quadrant(struct point *p) {

if( p->x > 0 && p->y > 0 ) return 1; else if( p->x < 0 && p->y > 0 ) return 2; else if( p->x < 0 && p->y < 0 ) return 3; else return 4; } 3. #include

#include

struct point {

int x, y;

}

;

struct rectangle {

struct point a, b;

// a는 오른쪽 상단, b는 왼쪽 하단을 나타낸다.

}

;

int area(struct rectangle r);

int perimeter(struct rectangle r);

int is_square(struct rectangle r);

int main(void) {

struct point p1= {

1, 1

}

;

struct point p2= {

2, 2

}

;

struct rectangle r;

r.a = p1;

r.b = p2;

printf(“%d

“, area(r));

printf(“%d

“, perimeter(r));

printf(“%d

“, is_square(r));

return 0;

}

int area(struct rectangle r) {

return abs(r.a.x-r.b.x)*abs(r.a.y-r.b.y);

}

int perimeter(struct rectangle r) {

return 2*(abs(r.a.x-r.b.x)+abs(r.a.y-r.b.y));

}

int is_square(struct rectangle r) {

return abs(r.a.x-r.b.x)==abs(r.a.y-r.b.y);

}

4.

#include

struct complex {

double real;

double imag;

}

;

struct complex add(struct complex c1, struct complex c2) {

struct complex result;

result.real = c1.real+c2.real;

result.imag = c1.imag+c2.imag;

return result;

}

struct complex sub(struct complex c1, struct complex c2) {

struct complex result;

result.real = c1.real+c2.real;

result.imag = c1.imag+c2.imag;

return result;

}

struct complex mul(struct complex c1, struct complex c2) {

struct complex result;

result.real = c1.real*c2.real-c1.imag*c2.imag;

result.imag = c1.real*c2.imag+c1.imag*c2.real;

return result;

}

void print(struct complex c) {

printf(“%f+%fi

“, c.real,c.imag);

}

int main(void) {

struct complex c1= {

1.0, 2.0

}

;

struct complex c2= {

2.0, 3.0

}

;

struct complex c3;

c3= add(c1, c2);

print(c3);

return 1;

}

5.

#include

#include

struct vector {

double x;

double y;

}

;

struct vector vector_add(struct vector v1, struct vector v2) {

struct vector r;

r.x = v1.x + v2.x;

r.y = v1.y + v2.y;

return r;

}

void vector_print(struct vector v) {

printf(“(%f, %f)

“, v.x, v.y);

}

int main(void) {

struct vector v1= {

1.0, 2.0

}

;

struct vector v2= {

2.0, 3.0

}

;

struct vector v3;

v3 = vector_add(v1, v2);

vector_print(v3);

return 0;

}

6.

#include

#include

struct email {

char title[100];

char receiver[50];

char sender[50];

char content[1000];

char date[100];

int priority;

}

;

int main(void) {

struct email e;

strcpy(e.title, “안부 메일”);

strcpy(e.receiver, “[email protected]”);

strcpy(e.sender, “[email protected]”);

strcpy(e.content, “안녕하십니까? 별일 없으신지요?”);

strcpy(e.date, “2010/9/1”);

e.priority = 1;

return 0;

}

7.

#include

#include

struct food {

char name[100];

int calories;

}

;

int calc_total_calroies(struct food array[], int size);

int main(void) {

struct food food_array[3]= { {

“hambuger”, 900

}

, {

“bulgogi”, 500

}

, {

“sushi”, 700

}

}

;

int total = calc_total_calroies(food_array, 3);

printf(“%d

“, total);

return 0;

}

int calc_total_calroies(struct food array[], int size) {

int i, total=0;

for (i=0;i

#include

// 직원

struct employee {

int number;

// 사번

char name[20];

// 이름

int age;

// 나이

char tel[20];

// 전화번호

}

;

int main(void) {

struct employee e[10] = { {

1, “홍길동1”, 20, “111-1111”

}

, {

2, “홍길동2”, 25, “111-1112”

}

, {

3, “홍길동3”, 60, “111-1113”

}

, {

4, “홍길동4”, 40, “111-1114”

}

, {

5, “홍길동5”, 50, “111-1115”

}

, {

6, “홍길동6”, 45, “111-1116”

}

, {

7, “홍길동7”, 32, “111-1117”

}

, {

8, “홍길동8”, 23, “111-1118”

}

, {

9, “홍길동9”, 29, “111-1119”

}

, {

10, “홍길동10”, 62, “111-1120”

}

}

;

int i;

for (i=0;i<10;i++) if( e[i].age >= 20 && e[i].age <= 30 ) printf("%s ", e[i].name); return 0; } 9. #include

#include

struct contact {

char name[100];

char home_phone[100];

char cell_phone[100];

}

;

int main(void) {

struct contact list[5];

int i;

char name[100];

for (i=0;i<5;i++) { printf("이름을 입력하시오:"); scanf("%s", list[i].name); printf("집전화번호를 입력하시오:"); scanf("%s", list[i].home_phone); printf("휴대폰번호를 입력하시오:"); scanf("%s", list[i].cell_phone); } printf("검색할 이름을 입력하시오:"); scanf("%s", name); for (i=0;i<5;i++) { if( strcmp(name, list[i].name)==0 ) { printf("집전화번호: %s ", list[i].home_phone); printf("휴대폰번호: %s ", list[i].cell_phone); return 0; } } printf("검색이 실패하였슴 "); return 0; } 10. #include

#include

struct card {

int value;

char suit;

}

;

int main(void) {

struct card cards[52];

int i;

for (i=0;i<13;i++) { cards[i].value=i%13+1; cards[i].suit='c'; } for (i=0;i<13;i++) { cards[i+13].value=i%13+1; cards[i+13].suit='d'; } for (i=0;i<13;i++) { cards[i+26].value=i%13+1; cards[i+26].suit='h'; } for (i=0;i<13;i++) { cards[i+39].value=i%13+1; cards[i+39].suit='s'; } for (i=0;i<52;i++) { printf("%d:%c ", cards[i].value, cards[i].suit); } return 0; } 15. #include

#include

enum shape_type {

TRIANGLE, RECTANGLE, CIRCLE

}

;

struct shape {

int type;

union {

struct {

int base, height;

}

tri;

struct {

int width, height;

}

rect;

struct {

int radius;

}

circ;

}

p;

}

;

int main(void) {

struct shape s;

enum shpae_type type;

printf(“도형의 타입을 입력하시오(0, 1, 2): “);

scanf(“%d”, &type);

switch(type) {

case TRIANGLE:

printf(“밑변과 반지름을 입력하시오(예를 들어서 100 200): “);

scanf(“%d %d”, &s.p.tri.base, &s.p.tri.height);

printf(“면적은 %d

“, (int)(0.5*s.p.tri.base*s.p.tri.height));

break;

case RECTANGLE:

printf(“가로와 세로의 길이를 입력하시오(예를 들어서 100 200):”);

scanf(“%d %d”, &s.p.rect.width, &s.p.rect.height);

printf(“면적은 %d

“, (int)(s.p.rect.width*s.p.rect.height));

break;

case CIRCLE:

printf(“반지름을 입력하시오(예를 들어서 100): “);

scanf(“%d”, &s.p.circ.radius);

printf(“면적은 %d

“, (int)(3.14*s.p.circ.radius*s.p.circ.radius));

break;

}

return 0;

}

18.

#include

#include

#define TITLE_SIZE 50

#define NAME_SIZE 50

#define LOCATION_SIZE 50

enum music_type {

KPOP, POP, CLASSIC, SCREEN_MUSIC

}

;

typedef struct music {

char title[TITLE_SIZE];

char singer[NAME_SIZE];

char location[LOCATION_SIZE];

enum music_type genre;

}

MUSIC;

void add_record(MUSIC library[], int count);

void menu();

int get_input();

void search_record(MUSIC library[], int count);

void print_record(MUSIC library[], int count);

int main(void) {

int num, count = 0;

MUSIC library[30] = {

‘\0’

}

;

while(1) {

menu();

num = get_input();

switch(num) {

case 1:

add_record(library, count);

count++;

continue;

case 2:

print_record(library, count);

continue;

case 3:

search_record(library, count);

continue;

case 4:

return -1;

}

return 0;

}

}

void add_record(MUSIC library[], int count) {

int type;

fflush(stdin);

printf(“제목:”);

gets(library[count].title);

printf(“가수:”);

gets(library[count].singer);

printf(“위치:”);

gets(library[count].location);

printf(“장르(0: 가요, 1: 팝, 2: 클래식, 3: 영화음악)”);

scanf(“%d”,&type);

if(type >= KPOP && type <= SCREEN_MUSIC) library[count].genre = type; else library[count].genre = KPOP; } void menu() { printf("==================== "); printf(" 1. 추가 "); printf(" 2. 출력 "); printf(" 3. 검색 "); printf(" 4. 종료 "); printf("==================== "); } int get_input() { int num; printf("정수값을 입력하시오 : "); scanf("%d",&num); return num; } void search_record(MUSIC library[], int count) { int i; char title[TITLE_SIZE]; fflush(stdin); printf("제목: "); gets(title); for (i = 0; i < count; i++) { if(strcmp(title,library[i].title) == 0) { printf("저장된 위치는 %s ",library[i].location); return; } } printf("찾는 음악이 테이블에 없습니다. "); } void print_record(MUSIC library[], int count) { int i; fflush(stdin); for (i = 0; i < count; i++) { printf("제목 : %s ",library[i].title); printf("가수 : %s ",library[i].singer); printf("위치 : %s ",library[i].location); if(library[i].genre == 0) printf("장르 : 가요 "); else if(library[i].genre == 1) printf("장르 : 팝 "); else if(library[i].genre == 2) printf("장르 : 클래식 "); else if(library[i].genre == 3) printf("장르 : 영화음악 "); } } 더 많은 쉽게 풀어 쓴 C언어EXPRESS 이론 솔루션 : https://chuinggun.tistory.com/category/%EC%89%BD%EA%B2%8C%20%ED%92%80%EC%96%B4%20%EC%93%B4%20C%EC%96%B8%EC%96%B4%20Express%20%EC%9D%B4%EB%A1%A0 더 많은 쉽게 풀어 쓴 C언어EXPRESS 프로그래밍 솔루션 : https://chuinggun.tistory.com/category/%EC%89%BD%EA%B2%8C%20%ED%92%80%EC%96%B4%20%EC%93%B4%20C%EC%96%B8%EC%96%B4%20Express%20%EC%8B%A4%EC%8A%B5%EB%AC%B8%EC%A0%9C

쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.

Presentation on theme: “쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.”— Presentation transcript:

1 쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express

2 구조체는 서로 다른 데이터들을 하나로 묶는 중요한 도구입니다.

이번 장에서 학습할 내용 구조체는 서로 다른 데이터들을 하나로 묶는 중요한 도구입니다. 구조체 구조체와 포인터 공용체 열거형 typedef

3 자료형의 분류 기본 자료형: char, int, float, double, … 자료형

파생 자료형: 배열, 구조체, 공용체, …

4 구조체를 사용하면 변수들을 하나로 묶을 수 있습니다.

구조체의 필요성 학생 데이터를 하나로 묶어서 처리하려면? 구조체를 사용하면 변수들을 하나로 묶을 수 있습니다. int number; char name[10]; double grade;

5 구조체와 배열 구조체(structure): 레코드(record) 같은 타입의 집합 다른 타입의 집합

6 구조체 선언 구조체 선언 형식 struct student { int number; char name[10];

태그(tag): 이름 구조체 선언 형식 struct 태그 { 자료형 멤버1; 자료형 멤버2; … }; struct student { int number; char name[10]; double grade; }; 멤버(필드)

7 구조체 선언의 예 // x, y값으로 이루어지는 화면의 좌표 struct point { int x; // x 좌표

int y; // y 좌표 }; // 직사각형 struct rect { int x, y; int width, height; }; // 복소수 struct complex { double real; // 실수부 double imag; // 허수부 }; // 직원 struct employee { char name[20]; // 이름 int age; // 나이 int sex; // 성별 int salary; // 월급 }; // 날짜 struct date { int month; int day; int year; };

8 구조체 변수 선언 구조체 정의(선언)와 구조체 변수 선언은 다름 구조체 정의: 사용자 정의 자료형 선언

9 구조체의 초기화 중괄호를 이용하여 초깃값 나열 struct student { int number; char name[10];

double grade; }; struct student s1 = { 24, “Kim”, 4.3 };

10 구조체 멤버 참조 구조체 멤버 참조 연산자: . struct student { int number; char name[10];

구조체 멤버 참조 연산자: . struct student { int number; char name[10]; double grade; }; struct student s1; s1.number = 24; strcpy(s1.name, “Kim”); s1.grade = 4.3;

11 예제 #include #include struct student {

int number; char name[10]; double grade; }; int main(void) { struct student s; s.number = ; strcpy(s.name, “홍길동”); s.grade = 4.3; printf(“학번: %d

“, s.number); printf(“이름: %s

“, s.name); printf(“학점: %f

“, s.grade); return 0; } 학번: 이름: 홍길동 학점:

12 예제 #include struct student { int number;

char name[10]; double grade; }; int main(void) { struct student s; printf(“학번을 입력하시오: “); scanf(“%d”, &s.number); printf(“이름을 입력하시오: “); scanf(“%s”, s.name); printf(“학점을 입력하시오(실수): “); scanf(“%lf”, &s.grade); printf(“학번: %d

“, s.number); printf(“이름: %s

“, s.name); printf(“학점: %f

“, s.grade); return 0; } 학번을 입력하시오: 이름을 입력하시오: 홍길동 학점을 입력하시오(실수): 4.3 학번: 이름: 홍길동 학점:

13 예제 #include #include

struct point { int x, y; }; int main(void) { struct point p1, p2; int xdiff, ydiff; double dist; printf(“점의 좌표를 입력하시오(x y): “); scanf(“%d %d”, &p1.x, &p1.y); scanf(“%d %d”, &p2.x, &p2.y); xdiff = p1.x – p2.x; ydiff = p1.y – p2.y; dist = sqrt(xdiff * xdiff + ydiff * ydiff); printf(“두 점 사이의 거리는 %f입니다.

“, dist); return 0; } 점의 좌표를 입력하시오(x y): 10 10 점의 좌표를 입력하시오(x y): 20 20 두 점 사이의 거리는 입니다. p2 (x,y) p1 (x,y)

14 구조체 중첩 number name dob grade s1 struct date { int month; int day;

int year; }; number name dob grade month day year s1 struct student { int number; char name[10]; struct date dob; // 구조체 안에 구조체 포함 double grade; }; struct student s1; s1.dob.month = 3; s1.dob.day = 29; s1.dob.year = 1983;

15 예제 x y #include struct point { int x, y; };

struct rect { struct point p1, p2; }; int main(void) { struct rect r; int w, h, area, peri; printf(“왼쪽 상단의 좌표를 입력하시오: “); scanf(“%d %d”, &r.p1.x, &r.p1.y); printf(“오른쪽 하단의 좌표를 입력하시오: “); scanf(“%d %d”, &r.p2.x, &r.p2.y); w = r.p2.x – r.p1.x; h = r.p2.y – r.p1.y; area = w * h; peri = 2 * (w + h); printf(“면적은 %d이고 둘레는 %d입니다.

“, area, peri); return 0; } 왼쪽 상단의 좌표를 입력하시오: 1 1 오른쪽 하단의 좌표를 입력하시오: 6 6 면적은 25이고 둘레는 20입니다. x y

16 구조체 변수의 대입과 비교 같은 타입의 구조체 변수끼리 대입은 가능하지만 비교는 불가능

struct point { int x, y; }; int main(void) { struct point p1 = { 10, 20 }; struct point p2 = { 30, 40 }; p2 = p1; // 대입 가능 if (p1 == p2) // 비교 불가능  컴파일 오류!! printf(“p1과 p2가 같습니다.”); if (p1.x == p2.x && p1.y == p2.y) // 올바른 비교 return 0; }

17 구조체 배열 구조체 배열의 선언 구조체 배열의 초기화 struct student { int number;

char name[10]; double grade; }; struct student list[3]; list[1].number = 24; strcpy(list[1].name, “Kim”); list[1].grade = 4.3; 구조체 배열의 초기화 struct student list[3] = { { 25, “Mun”, 3.92 }, { 24, “Kim”, 4.3 }, { 23, “Tim”, 2.9 } };

18 예제 #include #define SIZE 3 struct student {

int number; char name[20]; double grade; }; int main(void) { struct student list[SIZE]; int i; for (i = 0; i < SIZE; i++) { printf("학번을 입력하시오: "); scanf("%d", &list[i].number); printf("이름을 입력하시오: "); scanf("%s", list[i].name); printf("학점을 입력하시오(실수): "); scanf("%lf", &list[i].grade); } for (i = 0; i < SIZE; i++) printf("학번: %d, 이름: %s, 학점: %f ", list[i].number, list[i].name, list[i].grade); return 0; 학번을 입력하시오: 이름을 입력하시오: 홍길동 학점을 입력하시오(실수): 4.3 학번을 입력하시오: 이름을 입력하시오: 김유신 학점을 입력하시오(실수): 3.92 학번을 입력하시오: 이름을 입력하시오: 이성계 학점을 입력하시오(실수): 2.87 학번: , 이름: 홍길동, 학점: 학번: , 이름: 김유신, 학점: 학번: , 이름: 이성계, 학점: 19 구조체를 가리키는 포인터 구조체를 가리키는 포인터 n p ptr … struct student { int number; char name[10]; double grade; }; struct student s = { , "홍길동", 4.3 }; struct student *p = &s; printf("학번=%d ,이름=%s, 학점=%f ", s.number, s.name, s.grade); printf("학번=%d, 이름=%s, 학점=%f ", (*p).number, (*p).name, (*p).grade); ptr … 3  4 p n int n = 3; struct s { int *ptr; … } p; p.ptr = &n; *p.ptr = 4; // *(p.ptr) = 4;  n = 4; 20 -> 연산자 -> : 포인터로 구조체 멤버를 참조할 때 사용 (*p).member  p->member

#include struct student { int number; char name[20]; double grade; }; int main(void) { struct student s = { , “홍길동”, 4.3 }; struct student *p = &s; printf(“학번=%d, 이름=%s, 학점=%f

“, s.number, s.name, s.grade); printf(“학번=%d, 이름=%s, 학점=%f

“, (*p).number, (*p).name, (*p).grade); printf(“학번=%d ,이름=%s, 학점=%f

“, p->number, p->name, p->grade); return 0; } 학번= , 이름=홍길동, 학점=

21 포인터 멤버를 가지는 구조체 number name grade dob s #include

struct date { int month, day, year; }; struct student { int number; char name[20]; double grade; struct date *dob; }; int main(void) { struct date d = { 3, 20, 1980 }; struct student s = { , “Kim”, 4.3, &d }; // s.dob = &d; printf(“학번: %d

“, s.number); printf(“이름: %s

“, s.name); printf(“학점: %f

“, s.grade); printf(“생년월일: %d년 %d월 %d일

“, s.dob->year, s.dob->month, s.dob->day); return 0; } number name grade dob month day year s 학번: 이름: Kim 학점: 생년월일: 1980년 3월 20일

22 구조체와 함수 구조체를 함수의 인자로 전달하는 경우 복사본 전달 구조체가 크면 시간과 메모리 측면에서 비효율적

구조체의 포인터를 함수의 인자로 전달하는 경우 시간과 메모리 절약 가능 원본 훼손 가능 읽기만 하고 변경하지 않는 경우: const 선언 int f(struct student s) { … } int f(struct student *p) { … } int f(const struct student *p) { … } 포인터를 통한 구조체 변경 방지

23 구조체 인자와 구조체 반환 #include struct vector { float x, y; };

struct vector get_vector_sum(struct vector a, struct vector b); int main(void) { struct vector a = { 2.0F, 3.0F }, b = { 5.0F, 6.0F }, sum; sum = get_vector_sum(a, b); printf(“벡터의 합은 (%f, %f)입니다.

“, sum.x, sum.y); return 0; } struct vector get_vector_sum(struct vector a, struct vector b) { struct vector result; result.x = a.x + b.x; result.y = a.y + b.y; return result; 벡터의 합은 ( , )입니다.

24 구조체 포인터 인자 #include

void vector_input(struct vector *p) { struct vector { float x, y; }; printf(“벡터 입력: “); scanf(“%f %f”, &p->x, &p->y); void vector_input(struct vector *p); void vector_output(const struct vector *p); void vector_output(const struct vector *p) { int main(void) { printf(“(%g, %g)”, p->x, p->y); struct vector v; vector_input(&v); vector_output(&v); return 0; } 벡터 입력: (1.2, 3.4)

25 구조체 포인터 반환 #include } struct vector { float x, y; };

struct vector *vector_input(struct vector *p) { struct vector *vector_input(struct vector *p); printf(“벡터 입력: “); scanf(“%f %f”, &p->x, &p->y); void vector_output(const struct vector *p); return p; int main(void) { void vector_output(const struct vector *p) { struct vector v; vector_output(vector_input(&v)); printf(“(%g, %g)”, p->x, p->y); return 0; 벡터 입력: (1.2, 3.4)

26 인자 전달: 배열과 구조체 배열 인자: 포인터로 전달(원본 전달) 구조체: 복사본 전달

void f(int ary[ ]) { ++ary[0]; } // void f(int *ary) { ++*(ary + 0); } … int a[3] = { 10, 20, 30 }; f(a); // a[0]: 11 struct s_array { int a[3]; }; void f(struct s_array sa) { ++sa.a[0]; } … struct s_array s = { { 10, 20, 30 } }; f(s); // s.a[0]: 10

27 공용체 공용체(union) 같은 메모리 영역을 멤버들이 공유 공용체 선언 및 사용 방법은 구조체와 유사

union example { char c; // 메모리 공유 int i; // 메모리 공유 }; 공용체는 첫째 멤버로만 초기화 가능 union u_tag { float v; char *s; }; union u_tag u = 3.4F; // O union u_tag u = “name”; // X

28 예제 #include union example { char c; int i; };

int main(void) { union example v; v.c = ‘A’; printf(“v.c = %c

“, v.c); v.i = 10000; printf(“v.i = %d

“, v.i); return 0; } v c A i 10000 v.c = A v.i = 10000

29 IP 주소 예제 (little endian) (big endian) (little endian) (big endian)

#include union ip_address { unsigned char saddr[4]; unsigned int iaddr; }; int main(void) { union ip_address addr = { 0x7F, 0x00, 0x00, 0x01 }; printf(“%08X

“, addr.iaddr); return 0; } addr saddr 7F 00 01 iaddr F (little endian) addr saddr 7F 00 01 iaddr 7F (big endian) F (little endian) 7F000001 (big endian)

30 공용체 활용 예제 #include // variable types #define INT 1 #define REAL 2 #define STR 3 struct s_var { // variable structure char *name; int type; union { // value int ival; double rval; char *sval; } u; }; void out_var(const struct s_var *p); int main() { struct s_var v; v.name = “n”; v.type = INT; v.u.ival = 1; out_var(&v); v.name = “r”; v.type = REAL; v.u.rval = 3.4; out_var(&v); v.name = “s”; v.type = STR; v.u.sval = “C Language”; out_var(&v); return 0; } void out_var(const struct s_var *p) { printf(“%s: “, p->name); switch (p->type) { case INT: printf(“INT, %d

“, p->u.ival); break; case REAL: printf(“REAL, %g

“, p->u.rval); break; case STR: printf(“STR, %s

“, p->u.sval); break; default: printf(“unknown type

“); break; } } n: INT, 1 r: REAL, 3.4 s: STR, C Language

31 구조체와 공용체의 크기 정렬 제한 조건(alignment constraint) 자료형 short(2B) int(4B)

float(4B) double(8B) 메모리 위치 2의 배수 4의 배수 4/8의 배수 // anonymous structure struct { char c; int n; } s; sizeof s : 8 union { char c; int n; } u; sizeof u : 4 c n c n struct { char a; char b; int n; } s; sizeof s : 8 struct { char a; int n; char b; } s; sizeof s : 12 a b n a n b

32 열거형 열거형(enumeration type): 정수형 상수 심볼 정의

enum days { SUN, MON, TUE, WED, THU, FRI, SAT }; // 0, 1, 2, 3, 4, 5, 6 태그 이름 정수형 상수 심볼 열거형 변수 enum days today; today = SUN; // today = 0; printf(“%d

“, MON); // 1 #define SUN 0 #define MON 1 … #define SAT 6

33 열거형 기호 상수(symbolic constant) 정의 #define보다 편리하고 오류 가능성이 적음

literal을 사용하는 것보다 가독성이 좋고 수정이 용이 #define보다 편리하고 오류 가능성이 적음 자동으로 연속된 값 설정 가능 블록 구조 적용 단점: 정수형 상수만 정의 가능 #define PI // O #define UNIV “SKHU” // O enum { PI = 3.14 }; // X enum { UNIV = “SKHU” }; // X #define INT 1 #define REAL 2 #define STR 3 // anonymous enum enum { INT = 1, REAL, STR }; // , , 3

34 열거형 literal #define 열거형 switch (code) { case 1: printf(“LCD TV

“);

break; case 2: printf(“PDP TV

“); } #define LCD 1 #define PDP 2 case LCD: case PDP: enum { LCD, PDP }; 기억하기 어렵고, 가독성이 나쁘며, 수정이 어려움 실수 가능성이 있고, 블록 구조가 적용되지 않음 #define PDP 1 실수 가능성이 적고, 블록 구조가 적용됨 정수형만 가능

35 열거형 초기화 enum { E0, E1 = 3, E2 }; // E0 = 0, E1 = 3, E2 = 4

enum { C1 = ‘A’, C2, C3 }; // C1 = ‘A’, C2 = ‘B’, C3 = ‘C’ enum Colors { Red = 0xFF << 16, Green = 0xFF << 8, Blue = 0xFF }; enum Boolean { FALSE, TRUE }; enum levels { low = 1, medium, high }; enum CarTypes { sedan, suv, sports_car, van, pickup, convertible }; 36 예제 #include

enum days { SUN, MON, TUE, WED, THU, FRI, SAT }; char *days_name[ ] = { “Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday” }; int main(void) { enum days d = WED; printf(“%d번째 요일은 %s입니다

“, d, days_name[d]); return 0; } 3번째 요일은 Wednesday입니다

37 typedef typedef: 기존 자료형에 새로운 타입 이름 부여 typedef old_type new_type;

typedef unsiged char BYTE; BYTE index; // unsigned char index; typedef int INT32; typedef unsigned int UINT32; INT32 i; // int i; UINT32 k; // unsigned int k; struct point { int x, y; }; typedef struct point POINT; POINT a, b; // struct point a, b; typedef struct { int x, y; } POINT; POINT a, b; // struct { int x, y; } a, b;

38 예제 #include typedef struct { int x, y; } POINT;

POINT move(POINT p, POINT delta); int main(void) { POINT p = { 2, 3 }, delta = { 10, 10 }, result; result = move(p, delta); printf(“새로운 점의 좌표는 (%d, %d)입니다.

“, result.x, result.y); return 0; } POINT move(POINT p, POINT delta) { POINT new_p = { p.x + delta.x, p.y + delta.y }; return new_p; 새로운 점의 좌표는 (12, 13)입니다.

39 typedef 이식성(portability) 향상 #define은 블록 구조가 적용되지 않고, 타입 정의 기능이 제한적임

기계 독립적인 코드 작성 가능 typedef unsigned long size_t; #define은 블록 구조가 적용되지 않고, 타입 정의 기능이 제한적임 문서화 기능 별도의 주석 없이도 자체적으로 설명력이 있음  가독성 향상 // int: 2B, long: 4B 인 경우 typedef long INT32; // 4B 정수형 // int: 4B, long: 8B 인 경우 typedef int INT32; // 4B 정수형 #define INT32 int INT32 n; // int n; #define String char * String s1, s2; // char * s1, s2; // s1: char *, s2: char typedef char *String; String s1, s2; // char *s1, *s2; // s1: char *, s2: char * typedef int Height; Height h1, h2; typedef int Weight; Weight w1, w2;

40 예제 #include typedef struct { int number;

char name[20]; double grade; } Student; Student LIST[ ] = { { , “홍길동”, 4.2 }, { , “김철수”, 3.2 }, { , “김영희”, 3.9 } }; int main(void) { Student *best = LIST; Student *p = LIST + 1; Student *end = LIST + (sizeof LIST / sizeof LIST[0]); for ( ; p < end; p++) if (p->grade > best->grade) best = p; printf(“수석: %s, %d, %g

“, best->name, best->number, best->grade); return 0; } 수석: 홍길동, , 4.2

키워드에 대한 정보 쉽게 풀어 쓴 c 언어 express 13 장

다음은 Bing에서 쉽게 풀어 쓴 c 언어 express 13 장 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / SBS

  • 1천만 명
  • SBS NEWS
  • SBS 뉴스
  • custom:뉴스넷
  • format:리포트
  • genre:사회
  • location:서울
  • location:전국
  • person:최호원
  • sbs
  • sbs 실시간
  • series:오뉴스
  • source:영상
  • type:방송
  • 뉴스 실시간
  • 마스크
  • 변이
  • 스포츠
  • 실시간뉴스
  • 실외
  • 에스비에스
  • 전국
  • 집단 면역이 달성됐다

실외 #마스크 #전면 #해제…\”국민 #97%가 #항체 #보유\” #/ #SBS


YouTube에서 쉽게 풀어 쓴 c 언어 express 13 장 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 실외 마스크 전면 해제…\”국민 97%가 항체 보유\” / SBS | 쉽게 풀어 쓴 c 언어 express 13 장, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  Tiendas De Patinetes Electricos En Madrid | Super Patinetes Eléctricos En Tiendas De Corea !! | Minimotors-Currus-Weped | Solorueda 답을 믿으세요

Leave a Comment