1 / 11

C , 이것만 알면 된다

C , 이것만 알면 된다. Chapter 12. 포인터와 배열. 평가 프로그램 실습. 평가 프로그램 실습 1. 12.5 절의 실습문제를 이용해서 틱텍토 게임을 만들어 보시오 . 게임 방법은 가로 세로 방향으로 같은 모양을 만들면 이긴다 . 컴퓨터가 게임 하는 것은 rand 함수를 이용해서 x, y 좌표를 얻는다 . 사람의 경우는 x, y 좌표를 직접 입력 받는다 . 현재 입력된 상태에서 누가 이겼는지를 판단한다. 프로그램 실습 2 - 포인터 , 동적할당.

Télécharger la présentation

C , 이것만 알면 된다

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C, 이것만 알면 된다

  2. Chapter 12 포인터와 배열 평가 프로그램 실습

  3. 평가 프로그램 실습 1 • 12.5절의 실습문제를 이용해서 틱텍토 게임을 만들어 보시오. • 게임 방법은 가로 세로 방향으로 같은 모양을 만들면 이긴다. • 컴퓨터가 게임 하는 것은 rand 함수를 이용해서 x, y 좌표를 얻는다. • 사람의 경우는 x, y좌표를 직접 입력 받는다. • 현재 입력된 상태에서 누가 이겼는지를 판단한다.

  4. 프로그램 실습 2 - 포인터, 동적할당 • 포인터 변수를 인자로 가지는 함수 swap • 두개의 정수형 포인터 변수를 인자로 받아 두 변수의 값을 바꾼다 (반환값 없음) • 배열을 인자로 가지는 함수 asort • 하나의 정수형 배열과 그 크기를 인자로 받음 • 인자로 받은 배열을 새로운 배열 c에 복사 • 배열 c의 원소를 크기가 큰 것부터 순서대로 정렬한 후, 정렬된 배열의 원소를 출력 • 배열 c를 정렬할 때, 함수 swap을 사용 • 메인함수 • 음수가 입력될 때 까지 정수들을 입력 받아 배열x에 저장 • 배열 x와 그 크기를 인자로 하여 함수 asort를 호출

  5. 프로그램 실습 3 - 동적할당 • 12장 연습문제 9번 • 입력 받은 숫자만큼의 소수(prime number)를 구하는 함수를 작성하시오. 이 함수는 동적 할당 함수 (malloc 함수)를 이용하여 필요한 만큼의 공간을 확보하고 이 공간에 구한 소수를 저장한 후에 그 포인터를 반환한다. 메인 함수에서는 이 함수를 호출하여 얻은 포인터를 이용하여 소수를 화면에 출력하고 마지막으로 동적할당 받은 공간은 운영체제에 반환하시오.

  6. 개발포인트 • main 함수 • 원하는 소수의 개수를 입력 받음 • scanf(“%d”, &num_prime); • malloc을 이용한 메모리 동적 할당 • #include <stdlib.h> • int* pprime; • pprime = (int*)malloc(sizeof(int) * num); • 여기에서 *pprime은 pprime[num]과 동일.(대신 num의 값은 사용자가 입력한 값) • Heap 메모리에 pprime을 동적 할당 • 포인터를 사용하는 이유는 메모리의 크기(num_prime)가 프로그래밍 시점에서 정해지지 않았기 때문

  7. main 함수 (계속) • SavePrime(…) 함수 호출 • printf문 • printf(“%d “, pprime[i]); 로 사용이 가능 • 메모리 반환 • free(pprime); • 메모리를 반환해야 하는 이유는? • SavePrime(…) 함수가 리턴값을 가지지 않음에도 main함수에서 pprime을 사용할 수 있는 이유는? • Call by reference • Call by value

  8. void SavePrime (int* pprime, int num_prime) 함수 • 1부터 원하는 개수만큼 소수를 구할 때 까지 계속 1씩 증가하는 숫자를 IsPrime()으로 넘겨주는 함수 • IsPrime의 리턴값이 1이면 pprime에 저장 • intIsPrime (int* pprime, int current_num) 함수 • SavePrime() 함수로부터 두 개의 파라미터를 받아 소수이면 1을, 소수가 아니면 0을 리턴하는 함수 • Hint : 2의 배수는 소수가 아니다. 단, 2는 소수이다. • Hint : 3부터 각 홀수로 나누어 보아 나누어 떨어지는 값이 없으면 소수이다.

More Related