PowerPoint 프레젠테이션 - WithCS · -1을리턴 한다.) 마찬가지로....

Preview:

Citation preview

C 전처리기와 C 라이브러리

16

1

Section 1Section 2Section 3

C 전처리기

C 라이브러리함수 , 매크로

2

무엇을학습할까요?

C 전처리기

C 라이브러리

문수, 매크로

실전 프로젝트(연습문제 풀이, 총 7 문제)

3

기초다지기

#include <stdio.h>#include “c:\\work\\c\\userHeaderFile.h”#define PAI 3.14

사용하기를 원하는 전처리기 정의가 들어 있는 헤더 파일을 작성하라.01

4

프로그래밍 연습 문제 p911

두 수의 조화평균은 두 수의 역수를 취하고,

두 역수의 평균을 구한 후,

다시 그 결과의 역수를 취하여 얻는다.

#define 지시자를 사용하여 이 연산을 수행하는 매크로 함수를 정의하라.

그 매크로를 테스트하는 간단한 프로그램을 작성하라.

프로그래밍 연습 문제

02

5

p911

프로그래밍 연습 소스 02

6

프로그래밍 연습 소스 02

7

프로그래밍 연습 문제

03 극좌표계는 어떤 벡터를 크기와, x축에서 그 벡터까지 시계 반대 방향으로

잰 각도로 나타낸다.

같은 벡터를 직각좌표계에서는 x 성분과 y 성분으로 나타낸다

(그림 16.3 참조). 어떤 벡터의 크기와 각도(단위는 ̊ 단위)를 읽고,

x 성분과 y 성분으로 표시하는 프로그램을 작성하라.

관련 표현식은 다음과 같다.

x = r cos A

y = r sin A

극좌표 값들을 가지는 구조체를 취하고, 직각좌표계의 값들을 가지는 구조체

를 리턴하는 변환 함수를 작성하라.

(원한다면 그러한 구조체들을 가리키는 포인터를 사용해도 좋다.)

8

p911

프로그래밍 연습 소스 03

9

프로그래밍 연습 소스 03

10

프로그래밍 연습 소스 03

11

프로그래밍 연습 소스 03

12

ANSI 라이브러리는 다음과 같은 서술의 clock() 함수를 제공한다.

#include <time.h>

clock_t clock(void);

여기서, clock_t는 time.h에 정의되어 있는 데이터형이다.

이 함수는 시스템에 종속적인 단위로 주어지는 프로세서 시각을 리턴한다.

(이 함수는 프로세서 시각을 사용할 수 없거나 나타낼 수 없으면 -1을 리턴

한다.)

마찬가지로 time.h에 정의되어 있는 CLOCKS_PER_SEC는,

초당 프로세서 시각 단위의 개수이다.

프로그래밍 연습 문제

04

13

번에 있는 설명을 참조하라.

p912

그러므로 clock()의 두 리턴값의 차를 CLOCKS_PER_SEC로 나누면,

두 호출 사이에 경과된 시간을 초 단위로 알 수 있다.

나누기 전에 그 값들을 double형으로 캐스트하면

, 1초 미만의 값도 얻을 수 있다.

원하는 만큼의 시간 지연을 나타내는 double형 전달인자를 취하고,

그 시간이 경과할 때까지 루프를 실행하는 함수를 작성하라.

그 함수를 테스트하는 간단한 프로그램을 작성하라.

프로그래밍 연습 문제

04

14

번에 있는 설명을 참조하라.

p912

프로그래밍 연습 소스 04

15

프로그래밍 연습 소스 04

16

int형 원소들을 가지는 배열의 이름, 배열의 크기,

선택할 원소 개수를 세 개의 전달인자로 사용하는 함수를 작성하라.

그 함수는 지시된 개수만큼의 원소들을 배열에서 무작위로 선택하여

출력한다.

배열 원소들은 한 번 이상 선택될 수 없다.

(이것으로 로또복권 추첨이나 배심원단 선정을 시뮬레이션 할 수 있다.)

또한, 사용하는 컴파일러가 ‘12장: 저장 클래스, 연계, 메모리 관리’에서

설명했던 time()이나 이와 비슷한 함수를 사용할 수 있다면, 그 결과를

srand()와 함께 사용하여, rand() 난수 발생기를 초기화하라.

간단한 프로그램을 작성하여 함수를 테스트하라.

프로그래밍 연습 문제

05

17

p912witch를 사용하여 연습

04

를 다시 작성하라.

프로그래밍 연습 소스 05

18

프로그래밍 연습 소스 05

19

프로그래밍 연습 소스 05

20

프로그래밍 연습 소스 05

21

double형의 배열 대신에 struct names형의 원소들을 가지는 배열을

사용하도록 리스트 16.15를 수정하라.

더 적은 원소 개수를 사용하고, 적당한 이름들을 사용하여

그 배열을 명시적으로 초기화하라.

프로그래밍 연습 문제

06

22

06p912

23

프로그래밍 연습 소스 06

24

프로그래밍 연습 소스 06

25

프로그래밍 연습 소스 06

26

프로그래밍 연습 소스 06

다음은 가변 전달인자 함수를 사용하는 프로그램의 일부분이다.

#include <stdio.h>

#include <stdlib.h>

#include <stdarg.h>

void show_array(const double ar[], int n);

double * new_d_array(int n, ...);

int main(void)

{

..........

return 0;

}

프로그래밍 연습 문제

07

27

p912

new_d_array() 함수는 하나의 int형 전달인자와,

가변 개수의 double형 전달인자들을 사용한다.

이 함수는 malloc()에 의해 할당된 메모리 블록을 가리키는 포인터를\

리턴한다.

int형 전달인자는 동적 배열에 들어 있는 원소들의 개수를 나타낸다.

double형 값들은 그 원소들을 초기화하는 데 사용된다.

첫 번째 값이 첫 번째 원소에, 두 번째 값이 두 번째 원소에 대입된다.

나머지 값들도 이런 식으로 대입된다.

show_array()와 new_d_array() 함수에 대한 코드를 작성하여,

이 프로그램을 완성하라.

프로그래밍 연습 문제

07

28

p912

29

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

30

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

31

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

32

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

33

프로그래밍 연습 소스 07, C99 표준의 va_copy() 제공하지 않음(건너뜀)

KeyPoint 핵심개념

#include <stdio.h>#include “c:\\work\\c\\userHeaderFile.h”#define PAI 3.14

다음 강의 내용

제 17장 고급 데이터 표현, 연습문제

이번학습에이어!

Thank you !

36

Recommended