p r e f a c eª…품c... · 2015-12-08 · 3주 3장 printf의 기본적인 사용법과 상수...
TRANSCRIPT
P R E F A C E
3
서 문
저자가 처음으로 컴퓨터와 프로그램이라는 것을 접했던 시기는 1984년 초쯤으로 기억합니
다. 그 당시 APPLE PC라고 하는 개인용 컴퓨터가 청계천 전자상가에서 조립되어 판매되기
시작했는데 본체의 가격도 고가였으며, 플로피 디스크를 이용하는 보조기억장치나 프린터
가 본체 가격만큼이나 비싸서(프린터는 본체의 2배로 기억) 그림의 떡이었던 시절이었기에
모든 장치를 완벽하게 갖춘 PC를 개인적으로 보유했던 사람이 드물었습니다.
우연히 교수님 연구실에 들렀을 때 컴퓨터로 프로그램 작업을 하던 교수님께서 너무도 궁금
해 하던 본인을 위해 짧은 시간 동안이었지만 컴퓨터의 기능과 프로그램을 소개해 주었고,
그 이후로 컴퓨터라는 기계에 매료되었습니다.
공부하는데 꼭 필요한 것이라고 부모님을 여러 번 조른 끝에 본체와 자그마한 흑백 모니터
는 어렵사리 장만했으나 보조기억장치를 이용할 수 없었기 때문에 한번 프로그램을 시작하
면 중간에 멈추고 다른 일을 할 수가 없었으며, 어찌되었던 실행 결과를 확인해야만 끝이 났
었습니다. 그런데 그 당시는 요즘과는 달리 밤늦은 시간에도 자주 정전이 되는 바람에 많은
시간을 공들여 작성했던 프로그램들이 실행 결과를 보기도 전에 한순간에 날아가 버리는 사
태가 이틀 걸러 일어났었고, 그때마다 말로 표현할 수 없는 탄식과 회의가 있었지만 어느 순
간부터 오기가 생겨 몇 번이고 다시 작성했었고, 아침이 된 것도 모르고 실행 결과를 보면서
흐뭇해하던 때가 있었습니다. 아마도 이러한 색다른 경험이 새롭고 다양한 프로그래밍에 대
해 눈을 뜨게 하였고, 초보 프로그래머를 위한 책을 만들려는 용기를 준 것으로 생각합니다.
저자의 경험상 프로그램 언어는 외국어와 마찬가지로 문법만을 외우거나 이해한다고 해서
외국인과의 대화를 자연스럽게 할 수 없듯이 직접 그리고 자주 프로그램을 작성해봐야만 그
문장과 문법의 의미를 이해할 수 있으며, 스스로 새로운 문제에 대해 프로그램을 작성할 수
있는 용기와 능력이 생기게 됩니다. 저자는 우연히도 그러한 연습을 본의 아니게 반복하게
되었지만 지금도 그때의 상황을 고맙게 생각하고 있습니다.
모든 일에는 순서가 있듯이 프로그램도 결국 그 처리의 순서를 정하여 작성하는 것입니다.
이 책이 나오기까지 많은 분들의 도움이 있었습니다. 10여년 가까이 프로그램 언어 과목을
강의해오면서 다소 엉뚱했지만 생각의 전환을 주었던 질문을 던진 학생들에게 고마움을 표
시합니다. 프로그램에 눈을 뜨게 하였고 다양한 마인드를 경험하게 해준 허문열 교수님, 책
P R E F A C E
4
의 목차와 구성에 대해 조언을 아끼지 않으셨던 학과의 여러 교수님께 감사를 드립니다. 그
리고 책의 여러 부분에서 생각의 모티브를 얻게 해준 C 언어 책을 출판하였던 선배 교수님
들께도 지면을 통해 감사드립니다.
그리고 김승기 사장님과 더불어 이 책이 더욱 돋보이도록 훌륭하게 편집해 준 편집부 직원
들에게도 감사의 말씀을 전하며, 항상 믿음으로 대해주는 아내와 정호, 지호 그리고 자식을
위해 헌신적인 도움을 주시는 부모님께 머리 숙여 감사를 드립니다.
끝으로 이 책의 많은 부분에서 쉽게 표현하려고 했던 저자의 본래 의도와는 다르게 표현된
미흡한 점이 없지 않으나 프로그램 언어를 공부하려는 학생들에게 좋은 벗으로 기억되기를
희망합니다.
2013년 2월
안기수
P R E F A C E
5
이 책의 대상과 구성
이 책은 C 언어 문법과 프로그래밍 방법을 이해하기 쉽게 서술한 프로그램 입문서로서 컴
퓨터 비전공자나 전공자 모두를 대상으로 한다. 이 책에 포함된 예제 프로그램은 Visual
C++ 2010 Express를 기준으로 작성되었으나, Turbo C/C++의 경우와 실행 결과를 비교
할 수 있도록 함께 수록하여 컴파일러에 상관없이 예제 프로그램의 실습을 진행할 수 있다.
이 책은 다음과 같이 [프로그램 기초], [문법 이해와 적용], [프로그램 응용] 그리고 [분석 및
종합 평가]의 4단계로 진행할 수 있도록 구성되어 있으며, 총 11부(20장)로 구분하였다. 각
단계별 구성, 학습 내용과 진행은 다음과 같다.
구분 단계 학습 내용과 진행
책
프로그램
기초
1부 프로그램을 시작하기 전에2부 프로그램의 작성과 실행
프로그램
기초
컴퓨터와
프로그램
↓프로그램
환경 이해컴파일 실습
문법 이해와
적용
3부 데이터와 연산4부 제어문5부 함수6부 배열과 포인터7부 사용자가 정의하는 데이터 형8부 파일 출력과 파일 입력9부 고급 프로그래밍 기술
문법 학습 [기초 문법]
↓
문법 이해[예제실습]
[실습문제]
↓문법 확인
응용력 향상
[단원정리]
[연습문제]
CD
프로그램
응용10부 응용 프로그래밍
프로그램
응용
[고급기술]
[심화학습]
분석 및
종합 평가11부 과제와 프로젝트 프로그램
과제선택[과제완성]
[프로젝트완성]
↓과제평가
예제 예제 프로그램, 실습문제 정답 Visual C++ source
P R E F A C E
6
이 책의 특징과 미리보기
이 책은 다음의 4단계로 진행하여 학습의 완성도를 높이고자 한다.
[단계 1]
프로그램
기초
➞ ➞ ➞
[단계 2]
문법 이해와
적용
[단계 3]
프로그램
응용
[단계 4]
분석 및
종합 평가
각 단계별로 특징을 요약하면 다음과 같다.
[프로그램 기초] 단계
•프로그램의 개요, 프로그램 작성에 요구되는 기초 지식(변수와 연산자, 출력) 설명
•맛보기 프로그램을 통해 프로그램을 작성하고, 컴파일과 실행 방법을 단계별로 진행
[문법 이해와 적용] 단계
• 프로그램 언어를 배울 초보자에게 문법의 개념은 쉽지 않으므로 각 단원 도입 부분에 실
생활과 연관지어 문법의 개념을 이해할 수 있도록 설명
• 각 장에는 예제와 더불어 실습문제를 추가하여 자기 주도적 학습으로 진행하도록 구성
• 빠른 실습 진행과 확고한 문법 이해를 위해 가능한 예제의 일관성 유지
• 각 장에 ‘참고’를 삽입하여 프로그래밍에 참고할 만한 추가적인 내용 제공
• 각 단원의 마지막에 제시된 ‘단원정리’를 통해 학습한 문법을 정리·확인
• 연습문제는 난이도 별로 다양한 형태로 제시하여 수준별 평가가 가능
P R E F A C E
7
[프로그램 응용] 단계
•[문법 이해와 적용] 단계에 대한 심화학습 부분
• 10부의 응용 프로그래밍은 진법 변환 외에 7개의 주제를 중심으로 각 주제에 대한 프로그
램을 어떻게 어떤 방법으로 확장시켜 나갈 수 있는지를 단계별로 설명하여, 자기 주도적
심화학습이 가능하도록 구성
[분석 및 종합 평가] 단계
• 다양한 내용으로 구성된 52개의 과제와 36개의 프로젝트 수록
• 비전공자나 전공자가 과제나 프로젝트를 수행하는데 있어서 쉽게 접근할 수 있도록 각 주
제별로 ‘설명’, ‘처리 방법과 기준’, ‘문제 분석’, ‘예제와 출력 형식’ 그리고 ‘주요 문법과 참
고 프로그램’으로 구분하여 정리
CD에는 10부 응용 프로그래밍, 11부 과제와 프로젝트 프로그램, 실습문제 정답이 PDF 파일
로 수록되어 있으며, 예제 source 프로그램은 텍스트 형식으로 제공한다.
P R E F A C E
8
학습 일정(이 책은 한 학기 주당 3~4시간을 기준으로 구성하였다.)
1. 한 학기 학습 일정
주별 학습 일정 강의 및 실습 내용
1주1장 컴퓨터와 프로그램2장 프로그램의 작성과 실행
프로그램에 대한 기초 지식과 컴파일 과정 설명
2주2장 프로그램의 작성과 실행3장 printf의 기본적인 사용법과 상수
컴파일 과정과 기초 프로그래밍 학습
3주3장 printf의 기본적인 사용법과 상수4장 데이터를 보관하는 장소인 변수와 데이터 형
기초 프로그래밍 학습, 데이터의 표현 방법, 데이터
형의 종류와 차이, 변수의 사용 방법
4주4장 데이터를 보관하는 장소인 변수와 데이터 형5장 데이터 입력과 scanf
변수를 이용한 데이터의 입력
5주5장 데이터 입력과 scanf6장 계산에 필요한 연산자와 연산식
데이터의 입력과 연산
6주6장 계산에 필요한 연산자와 연산식7장 조건에 대한 판단과 선택
연산과 프로그램의 흐름과 순서를 제어하는 제어문
의 역할과 기능
7주8장 반복문9장 처리의 흐름 조절
프로그램의 일부를 반복 처리하는 반복문의 활용
방법과 기능, 프로그램의 흐름과 순서를 제어하는
제어문의 역할과 기능
8주중간 평가(또는 10장 특별한 기능을 처리하도록 만들어진 프로그램 단위, 함수)
9주10장 특별한 기능을 처리하도록 만들어진 프로그
램 단위, 함수
11장 변수에 대한 또 다른 속성, 기억 클래스
함수의 역할과 필요성, 라이브러리 함수 맛보기, 사
용자 정의 함수의 사용 방법
10주12장 라이브러리 함수와 응용13장 번호가 붙은 변수, 배열
라이브러리 함수의 종류와 기능, 사용 방법, 연속된
기억 장소를 사용하는 배열의 개념과 정의
11주13장 번호가 붙은 변수, 배열14장 포인터
배열의 활용 방법, 메모리의 주소를 가리키는 포인
터의 개념과 필요성
12주 14장 포인터포인터의 사용법과 포인터를 사용하는 라이브러리
함수들
13주15장 여러 데이터를 하나로 묶는 구조체 16장 그 외의 사용자 정의 데이터 형
여러 데이터를 묶어서 처리할 수 있는 구조체와
enum, union, bit filed
14주 17장 파일을 이용한 데이터의 입력과 출력데이터를 파일에 저장하고, 저장된 파일을 불러오는
파일 입출력 방법
15주18장 응용 프로그램 개발을 위해 필요한 방법과 문
법들
19장 응용 프로그래밍
응용 프로그래밍 실습
(응용 주제는 19장에서 선택)
16주 기말 평가기말시험 및 과제(프로젝트)
(과제와 프로젝트는 20장에서 선택)
P R E F A C E
9
2. 두 학기 학습 일정
두 학기의 과정으로 진행할 경우에는 시간적 여유가 있으므로 강사만의 강의 진행을 탈피하
여 학생들이 자기 주도적 학습에 의해 프로그램을 완성해 나갈 수 있도록 10부와 11부의 응
용 프로그램들을 활용할 수 있다.
주별 1학기 학습 일정 2학기 학습 일정
1주1장 컴퓨터와 프로그램2장 프로그램의 작성과 실행
10장 특별한 기능을 처리하도록 만들어진 프로그램 단위, 함수
12장 라이브러리 함수와 응용
2주2장 프로그램의 작성과 실행3장 printf의 기본적인 사용법과 상수
응용 프로그래밍 1(함수)
3주 3장 printf의 기본적인 사용법과 상수 13장 번호가 붙은 변수, 배열
4주4장 데이터를 보관하는 장소인 변수와 데이터 형5장 데이터 입력과 scanf
14장 포인터
5주 5장 데이터 입력과 scanf 응용 프로그래밍 2(배열과 포인터)
6주 6장 계산에 필요한 연산자와 연산식15장 여러 데이터를 하나로 묶는 구조체 16장 그 외의 사용자 정의 데이터 형
7주 7장 조건에 대한 판단과 선택 응용 프로그래밍 3(구조체)
8주 중간 평가 중간 평가
9주 8장 반복문 17장 파일을 이용한 데이터의 입력과 출력
10주8장 반복문9장 처리의 흐름 조절
응용 프로그래밍 4(파일 입출력)
11주10장 특별한 기능을 처리하도록 만들어진 프로그
램 단위, 함수
18장 응용 프로그램 개발을 위해 필요한 방법과 문법들
12주10장 특별한 기능을 처리하도록 만들어진 프로그
램 단위, 함수
11장 변수에 대한 또 다른 속성, 기억 클래스19장 응용 프로그래밍
13주 12장 라이브러리 함수와 응용 19장 응용 프로그래밍
14주 13장 번호가 붙은 변수, 배열 20장 과제와 프로젝트
15주 19장 응용 프로그래밍 20장 과제와 프로젝트
16주 기말 평가 기말 평가
C O N T E N T S
10
차 례
PARTⅠ 프로그램을 시작하기 전에
01C H A P T E R 컴퓨터와 프로그램
1.1 프로그램이 필요한 이유는? 22
1.2 프로그램은 무엇으로 만드는가? 23
1.3 프로그램은 어떻게 시작되었나? 25
1.4 프로그램은 요리를 만들어가는 과정과 같다 26
1.5 컴퓨터는 프로그램을 이해하는가? 28
1.6 실행 가능한 프로그램이 만들어지기까지의 과정 29
1.7 프로그램은 어디에서 어떻게 작성하는가? 31
단원정리 33
연습문제 34
PARTⅡ 프로그램의 작성과 실행
02C H A P T E R 프로그램의 작성과 실행
2.1 Visual C++ 설치와 실행 38
2.2 처음으로 작성하는 프로그램과 실행 40
2.3 이미 작성된 프로그램의 수정 50
2.4 오류 메시지와 수정 54
단원정리 57
연습문제 59
03C H A P T E R printf의 기본적인 사용법과 상수
3.1 printf에서 상수 출력 65
3.2 printf에서 상수와 연산 결과의 출력 69
3.3 printf에서 문자형과 문자열 상수의 출력 72
단원정리 76
연습문제 79
C O N T E N T S
11
PARTⅢ 데이터와 연산
04C H A P T E R 데이터를 보관하는 장소인 변수와 데이터 형
4.1 변수와 상수 86
4.2 인질을 담보로 하여 돈과 교환? 88
4.3 변수의 데이터 형 91
4.4 데이터 형의 사용 범위 99
4.5 모든 데이터 형 101
단원정리 102
연습문제 104
05C H A P T E R 데이터 입력과 scanf
5.1 scanf의 기본적인 사용법과 변수의 데이터 형 110
5.2 여러 데이터를 한 줄에 입력하는 방법 119
5.3 형식 지정자의 종류 122
단원정리 124
연습문제 126
06C H A P T E R 계산에 필요한 연산자와 연산식
6.1 산술 연산자(+, -, *, /, %) 132
6.2 증가, 감소 연산자(++, --) 135
6.3 대입 연산자(=, +=, *=, …) 137
6.4 수식을 연산식으로 표현하는 방법 139
6.5 연산 순서 140
6.6 그 밖의 연산자 147
단원정리 156
연습문제 158
PARTⅣ 제어문
07C H A P T E R 조건에 대한 판단과 선택
7.1 조건에 대해 참인 경우만 처리, if 문 165
7.2 조건에 대해 참 또는 거짓을 구분하여 선택, if else문 168
C O N T E N T S
12
7.3 2개 이상의 조건에 대해 참 또는 거짓을 구분하여 선택, if ~ else if 문 170
7.4 특정한 사례를 선택, switch case문 173
7.5 논리 연산자를 이용하여 여러 개의 조건을 판단 176
7.6 범위(구간)로 표시되는 조건의 판단 178
7.7 switch case 문의 응용 180
단원정리 182
연습문제 183
08C H A P T E R 반복문
8.1 횟수가 정해지는 반복, for 문 191
8.2 횟수가 정해지지 않은 반복, while 문 198
8.3 for 문의 응용 202
8.4 중첩된 반복문 207
8.5 for 문의 축소와 확장 215
단원정리 219
연습문제 221
09C H A P T E R 처리의 흐름 조절
9.1 처리 순서의 흐름을 중단하는 break 문 231
9.2 처리 순서의 흐름을 계속 이어주는 continue 문 232
9.3 처리 순서를 이동시키는 goto 문 233
단원정리 235
연습문제 236
PARTⅤ 함수
10C H A P T E R 특별한 기능을 처리하도록 만들어진 프로그램 단위, 함수
10.1 함수를 사용하는 이유 243
10.2 함수의 호출과 결과의 반환 244
10.3 라이브러리 함수 맛보기 245
10.4 사용자가 정의하는 함수 251
10.5 메인 함수, void main 254
10.6 자기 자신을 호출하는 재귀 함수 257
단원정리 266
연습문제 268
C O N T E N T S
13
11C H A P T E R 변수에 대한 또 다른 속성, 기억 클래스
11.1 지역(local) 변수와 전역(global) 변수 277
11.2 자동(auto) 변수 279
11.3 정적(static) 변수 280
11.4 외부(extern) 변수 284
11.5 레지스터(register) 변수 285
단원정리 287
연습문제 289
12C H A P T E R 라이브러리 함수와 응용
12.1 문자와 문자열 관련 함수 294
12.2 수학 계산 함수 297
12.3 화면과 커서의 제어 305
단원정리 310
연습문제 312
PARTTⅥ 배열과 포인터
13C H A P T E R 번호가 붙은 변수, 배열
13.1 여러 개의 변수가 필요한 경우 321
13.2 배열과 변수의 차이 321
13.3 1차원 배열의 선언과 사용 322
13.4 scanf를 이용한 배열 요소의 입력 325
13.5 배열과 문자열 326
13.6 2차원 배열의 초기화와 출력 330
13.7 함수와 배열 334
단원정리 338
연습문제 341
14C H A P T E R 포인터
14.1 데이터와 메모리 주소 352
14.2 메모리 주소를 저장하는 포인터 변수 355
14.3 포인터와 배열 360
14.4 포인터에 대한 연산 361
14.5 포인터와 문자열 366
C O N T E N T S
14
14.6 함수와 포인터 370
14.7 문자열 처리와 관련된 라이브러리 함수 377
14.8 키워드 const 384
단원정리 386
연습문제 388
PARTⅦ 사용자가 정의하는 데이터 형
15C H A P T E R 여러 데이터를 하나로 묶는 구조체
15.1 구조체가 필요한 경우 401
15.2 구조체 만들기 402
15.3 구조체와 데이터 404
15.4 구조체 변수, 구조체 멤버 간의 데이터 저장 409
15.5 구조체 배열 410
15.6 구조체 포인터 412
15.7 구조체 멤버가 배열 또는 포인터인 경우의 데이터 처리 413
15.8 구조체 형의 크기와 멤버의 위치 414
15.9 구조체와 함수 417
15.10 구조체를 헤더 파일로 저장하여 사용하는 방법 421
15.11 구조체 속의 구조체(중첩된 구조체) 422
15.12 자기 참조 구조체 427
단원정리 432
연습문제 433
16C H A P T E R 그 외의 사용자 정의 데이터 형
16.1 구조체와 비슷하지만 차이가 있는 공용체, union 440
16.2 상수들의 집합을 정수로 대신하는 열거형, enum 443
16.3 비트 필드(bit field) 445
단원정리 447
연습문제 448
C O N T E N T S
15
PARTTⅧ 파일 출력과 파일 입력
17C H A P T E R 파일을 이용한 데이터의 입력과 출력
17.1 파일 처리를 위한 기초 지식 458
17.2 텍스트 방식의 파일 다루기 462
17.3 이진 방식의 파일 다루기 479
17.4 원하는 블록의 위치에서 파일 읽기와 쓰기가 가능한 랜덤 처리 방식 486
단원정리 501
연습문제 503
PARTⅨ 고급 프로그래밍 기술
18C H A P T E R 응용 프로그램 개발을 위해 필요한 방법과 문법들
18.1 프로젝트와 분할 컴파일 513
18.2 프로그램 실행 중에 기억 공간을 확보하는 동적 할당 516
18.3 전처리기 519
18.4 배포 프로그램 530
단원정리 534
연습문제 535
부록 540
찾아보기 546
C O N T E N T S
16
PARTⅩ 응용 프로그래밍
19C H A P T E R 응용 프로그래밍
19.1 진법 변환
19.2 비트 연산과 응용
19.3 난수를 이용한 게임
19.4 시간과 날짜
19.5 기초 통계 계산
19.6 메뉴 선택으로 진행하는 프로그램
19.7 자료 구조
19.8 데이터 검색(Search)
19.9 데이터 정렬(sort)
연습문제
PARTⅩⅠ과제와 프로젝트 프로그램
20C H A P T E R 과제와 프로젝트
20.1 과제 프로그램
[과제 1] 등차수열
[과제 2] 등비수열
[과제 3] 계차수열
[과제 4] 최대공약수와 최소공배수
[과제 5] 소수 이하 임의의 자릿수에서 반올림
[과제 6] 행렬의 합, 차 그리고 곱의 계산
[과제 7] 파스칼의 삼각형
[과제 8] 비만도의 측정과 판정
[과제 9] 고속도로 통행요금 계산
[과제 10] 당구장 이용 요금 계산
[과제 11] 사원 봉급 계산
[과제 12] 승용차 세금 계산
[과제 13] 전력 요금 청구서
CD 수록
CD 수록
C O N T E N T S
17
[과제 14] 수도 요금 청구서
[과제 15] 도량형 환산
[과제 16] 삼각형 변의 길이 계산
[과제 17] sine과 cosine 그래프를 동시에 출력
[과제 18] 한자리 디지털 숫자 출력
[과제 19] 주유기 메타 출력
[과제 20] 끝말 이어가기
[과제 21] 영문 문자열 처리 함수
[과제 22] 한글 문자열 처리 함수
[과제 23] 사칙연산 계산기
[과제 24] 정수형 숫자의 카운트
[과제 25] 실수형 숫자의 카운트
[과제 26] 문장에 사용된 알파벳, 숫자, 기타 문자의 카운트
[과제 27] 서기를 간지로 변환
[과제 28] 특정일로부터 며칠 후 계산
[과제 29] 특정일의 요일 계산
[과제 30] 주민등록번호를 이용한 생년월일, 성별, 띠 그리고 만 나이 계산
[과제 31] 현재 시간과 경과 시간 출력
[과제 32] 세계 주요 도시의 현재 시간
[과제 33] stopwatch
[과제 34] 제비뽑기 번호 출력
[과제 35] 두 사람씩 서로의 숫자 카드를 교환
[과제 36] 트럼프 카드에서 임의로 10개 선택
[과제 37] 기억력 테스트
[과제 38] 숫자 야구게임
[과제 39] 사용자가 생각한 숫자를 컴퓨터가 맞추는 게임
[과제 40] 동전 던지기 모의실험
[과제 41] 주사위 던지기 모의실험과 막대그래프 출력
[과제 42] 주택복권 당첨 번호 발생기
[과제 43] 발 크기에 대한 통계 조사
[과제 44] 순위 계산
[과제 45] 영화의 eding credit을 출력
[과제 46] 파일에 포함된 알파벳 문자 카운트
[과제 47] 파일 크기의 계산과 파일 내용을 거꾸로 출력
[과제 48] 소스 프로그램에 line 번호를 붙여 텍스트 파일로 출력
[과제 49] 신호등 제어
C O N T E N T S
18
[과제 50] 택시미터기 제어
[과제 51] 자동판매기 제어
[과제 52] 이용자가 1명인 엘리베이터 운행 제어
20.2 프로젝트 프로그램
[프로젝트 1] 임의의 정수형 숫자에 대한 디지털 숫자 출력
[프로젝트 2] 임의의 아라비아 숫자를 로마 숫자로 변환
[프로젝트 3] 2, 8, 10, 16 진법 변환
[프로젝트 4] 스택을 이용한 후위 표기법
[프로젝트 5] 스택을 이용한 계산기
[프로젝트 6] 로또 추첨과 같은 방식의 로또번호 생성
[프로젝트 7] 로또 당첨번호에 대한 모의실험
[프로젝트 8] 구구단 학습 프로그램
[프로젝트 9] 정규난수 생성
[프로젝트 10] 대기 행렬 모형
[프로젝트 11] 보간(interploation) 검색
[프로젝트 12] heap 정렬
[프로젝트 13] shell 정렬 후 파일 출력
[프로젝트 14] quick 정렬 후 파일 출력
[프로젝트 15] 극장 좌석 관리 프로그램
[프로젝트 16] 패스트푸드 전문점의 메뉴선택 및 금전등록기 처리 프로그램
[프로젝트 17] 텍스트 파일에 대한 정렬
[프로젝트 18] 이진 파일에 대한 정렬
[프로젝트 19] 랜덤 접근에 의한 파일 데이터의 추가와 변경
[프로젝트 20] 학생 성적 파일 관리
[프로젝트 21] CD판매점의 판매 및 재고관리 프로그램
[프로젝트 22] 시간표 작성 및 파일 출력
[프로젝트 23] 도서관의 도서관리 프로그램
[프로젝트 24] 일정 관리 프로그램
[프로젝트 25] 고객 파일 관리
[프로젝트 26] 텍스트 파일에 저장된 데이터에 대한 단순 회귀분석
[프로젝트 27] 텍스트 파일에 저장된 데이터에 대한 상관 관계
[프로젝트 28] 영어 문장이 포함된 파일에 대해 단어별 목차(index) 파일 만들기
[프로젝트 29] 특정한 월의 바이오리듬(Biorhythm)
[프로젝트 30] 하노이 탑
[프로젝트 31] 수치 적분
C O N T E N T S
19
[프로젝트 32] 연립방정식의 해법
[프로젝트 33] 경마 게임
[프로젝트 34] 컴퓨터 초보자를 위한 자판(keyboard) 연습 프로그램
[프로젝트 35] library 함수들을 이용한 수학 계산 프로그램
[프로젝트 36] 이용자가 2명인 엘리베이터의 운행 제어
찾아보기INDEX
546
ㄱ각도 302
간접 연산자 412
감소 연산자 136
값에 의한 호출 254, 335
계승 260
공용체 441
관계 연산자 147
구조체 400
구조체 멤버 403
구조체 배열 410
구조체 변수 404
구조체 태그 403
구조체 포인터 412
구조체 형 402
구조체 형 FILE 465
기억 클래스 276
ㄴ난수 249
논리 연산자 149
ㄷ단순 연결 리스트 591
대입 연산자 137
데이터의 표현 100
데이터 형 101
도트 연산자 412
동적 할당 375, 414, 516
디버그 모드 531
디버깅 30
ㄹ라디안 302
라이브러리 함수 245
랜덤 접근 486
레지스터 변수 285
릴리즈 모드 531
ㅁ매크로 상수 522
매크로 함수 524
메모리의 기억 영역 283
메인 메뉴 589
문자열 326
문자열 상수 73
문자형 배열 327
문자형 상수 72
미리 정의된 매크로 526
ㅂ배열 320
배열 요소 322
배열 첨자 322
변수 86
보수 143
복합 대입 연산자 137
복합문 197
분할 컴파일 512
비트 연산자 150
비트 필드 445
ㅅ사용자 정의 함수 252
찾아보기
찾아보기 INDEX
547
산술 연산자 133
산술 연산자의 우선순위 141
삼각 함수 302
삽입 정렬 613
상수 65
선행처리기 519
솔루션 빌드 41, 47
스트림 460
시프트 연산자 151
실수형 상수 67, 91
실행 오류 30
ㅇ아스키 97
연결 리스트 428
연산자 우선순위 154
열거형 443
예약어 54
외부 정적 변수 282
원시 프로그램 41
이중 연결 리스트 599
이진 검색 605
이진 트리 599
인수 254
인자 254
임의 접근 486
입력 함수 110
입력 형식 지정자 123
ㅈ자기 참조 구조체 428
자동 변수 279
재귀적 호출 544
재귀 호출 257
전역 변수 277
정렬 612
정수형 상수 66
정적 변수 280
제어문 164
제어변수 192
조건 연산자 148
조건 컴파일 527
주소에 의한 전달 418
주소에 의한 호출 371
중첩된 구조체 422
중첩된 반복문 207
증가 연산자 136
지역 변수 277
ㅊ참조에 의한 호출 370
출력 형식 지정자 123
ㅋ캐스트 연산자 153
컴파일러 28
콤마 연산자 152
키워드 54
ㅌ텍스트 방식 460
트리 428, 599
트리의 운행 600
ㅍ파일 458
파일 포인터 462
포인터 352
포인터 배열 368
포인터 변수 355
포인터 상수 360
프로젝트 41
피보나치 검색 609
찾아보기INDEX
548
ㅎ함수 242
함수 원형 246, 252
함수 정의 252
함수 포인터 373
함수 호출 244
헤더 파일 245
헤더 파일 <ctype.h> 295
헤더 파일 <math.h> 246
헤더 파일 <stdlib.h> 296
헤더 파일 <string.h> 379
헤더 파일 <time.h> 562
형 변환 134, 152
형식 지정자 122
호도 302
AAND 연산 176
ANSI 256
ASCII 97
atof 296
atoi 296
atol 296
auto 279
Bbreak 173
break 문 231
bubble 정렬 574
Cceil 298
char 96
CLK_TCK 566
clock 565
const 375, 384
continue 문 232
cos 302
Ddefault 173
difftime 566
double 94
do while 문 201
Eenum 443
EOF 470
exit 463
exp 299
extern 284
Ffclose 465
feof 471
fflush 477
fgetc 469
fgets 473
floor 298
fmod 301
fopen 463
for 문 192
fprintf 474
fputc 467
fputs 472
fread 484
free 516
frexp 299
fscanf 476
fseek 487
ftell 487
fwrite 481
찾아보기 INDEX
549
Ggetc 469, 471
getch 306
getchar 468
gets 329
gotoxy 308
goto 문 233
Iif else 문 168
if 문 166
int 93
isalpha 294
islower 295
isupper 295
itoa 377
Kkbhit 567
Lldexp 299
localtime 563
log 299
log10 299
ltoa 377
Mmain 함수 254
malloc 375, 377, 430, 516, 594
modf 301
NNULL(\0) 327
Ppause 532
pow 299
putc 467
puts 330
Rrand 249, 554
return 문 253
rewind 488, 493
Sscanf 110
sin 302
sizeof 414, 572
sizeof 연산자 154
Sleep 566
sqrt 299
srand 250
static 280
strcat 380
strcmp 381, 491
strcpy 375, 382
strlen 382
strncmp 381
strncpy 382
strtod 379
strtol 379
strtoul 379
switch case 585
switch case 문 173, 180
system 532
Ttan 302
time 250, 563
toascii 295
tolower 295
toupper 295
찾아보기INDEX
550
Uunsigned 101
Vvoid 255
Wwhile 문 199
-- 136
/ 133
& 354
&& 177
% 133
++ 136
<< 151
>> 151
|| 178
%c 72
%d 66
#define 384, 522
#elif 528
#else 528
#endif 528, 529
%f 67
#if 528
#ifdef 529
#ifndef 529
#include 421, 520
#include 문 245
%lf 116
\n 52
%o 111
%p 354
%s 73
%u 354
%x 111
1차원 배열 324
2차원 배열 330
■안기수([email protected])
성균관대학교 통계학과 졸업
성균관대학교 대학원 통계학과 전산통계학 전공(석사, 박사)
현 동남보건대학 세무회계학과 교수
저서
단계별로 설명한 C 프로그래밍(2000, 생능출판사)
응용 프로그램 개발을 위한 명품 C 언어 프로젝트(2010, 생능출판사)
저 자 약 력
저자와의 협의에 의해인지를 생략합니다.
명품 C 언어 프로그래밍
안기수 지음
초 판 발 행 : 2007. 9. 1
개 정 판 : 2013. 2. 28
발 행 인 : 김 승 기
발 행 처 : 생능출판사
신 고 번 호 : 제406-2005-000002호
신 고 일 자 : 2005. 1. 21
I S B N : 978-89-7050-771-2 (93000)
4⃞1⃞3⃞-7⃞5⃞6⃞
경기도 파주시 문발동 507-12 파주출판도시
대표전화 : (031)955-0761, FAX : (031)955-0768
홈페이지 : http://www.booksr.co.kr
* 파본 및 잘못된 책은 바꾸어 드립니다. 정가 27,000원* 이 책을 불법 복사할 경우 저작권법에 의해
5년 이하의 징역이나 5,000만 원 이하의 벌금에 처해질 수 있습니다.
<개정판>