목차
PART 01 프로그램을 시작하기 전에
   01장 컴퓨터와 프로그램
      1.1 프로그램이 필요한 이유는? ... 24
      1.2 프로그램은 무엇으로 만드는가? ... 25
      1.3 프로그램은 어떻게 시작되었나? ... 27
      1.4 프로그래밍은 요리를 만들어가는 과정과 같다 ... 28
      1.5 컴퓨터는 프로그램을 이해하는가? ... 30
      1.6 실행 가능한 프로그램이 만들어지기까지의 과정 ... 31
      1.7 프로그램을 어디에서 어떻게 작성하는가? ... 33
      단원정리 ... 35
      연습문제 ... 36
PART 02 프로그램의 작성과 실행
   02장 프로그램 작성에 필요한 기초 지식들
      2.1 프로그램은 문제 해결을 위한 계산 과정의 연속 ... 40
        2.1.1 상수와 연산자 그리고 명령 ... 40
        2.1.2 데이터를 보관하는 장소, 변수 ... 41
      2.2 인질을 담보로 하여 돈과 교환? ... 43
      2.3 C 언어 맛보기 ... 45
      단원정리 ... 48
      연습문제 ... 50
   03장 처음으로 작성하는 C 프로그램
      3.1 변수를 이용한 프로그램의 작성과 실행 ... 52
        3.1.1 Visual C++의 실행 ... 53
        3.1.2 새 프로그램의 작성 ... 54
        3.1.3 프로그램 저장과 컴파일 ... 57
        3.1.4 컴파일 과정에서 나타나는 오류와 해결 방법 ... 59
        3.1.5 실행 프로그램의 생성과 실행 ... 62
        3.1.6 프로그램 작업 종료 ... 64
        3.1.7 프로그램 불러오기, 수정과 재실행 ... 65
      단원정리 ... 72
      연습문제 ... 73
PART 03 데이터와 연산
   04장 데이터의 표현과 종류
      4.1 숫자 데이터의 차이 ... 76
      4.2 숫자 데이터 형의 구분 ... 78
      4.3 문자 데이터와 사용방법 ... 81
      4.4 모든 데이터 형 ... 83
      단원정리 ... 84
      연습문제 ... 85
   05장 계산을 위해 필요한 연산자와 연산식
      5.1 산술 연산자(+, -, *, /, %) ... 88
      5.2 증가, 감소 연산자(++, --) ... 91
      5.3 대입 연산(=, +=, *=, …) ... 92
      5.4 수식을 연산식으로 표현하는 방법 ... 94
      5.5 연산 순서 ... 96
      5.6 그 밖의 연산자 ... 102
        5.6.1 관계 연산자(〈, 〉, ==, !=, …) ... 102
        5.6.2 조건 연산자(?:) ... 103
        5.6.3 논리 연산자(&&, ∥, !) ... 104
        5.6.4 비트 연산자(《, 》, ^, …) ... 105
        5.6.5 콤마 연산자(,) ... 106
        5.6.7 형 변환과 캐스트 연산자 ... 107
        5.6.8 sizeof 연산자 ... 108
        5.6.9 연산자 우선순위 ... 109
      단원정리 ... 110
      연습문제 ... 112
PART 04 기본적인 출력과 입력
   06장 printf( )와 scanf( )
      6.1 printf()의 사용방법 ... 116
      6.2 출력할 데이터의 자릿수 맞추기 ... 119
      6.3 여러 데이터를 한 줄에 출력하는 방법 ... 121
      6.4 scanf()의 사용방법 ... 122
      6.5 여러 데이터를 한 줄로 입력하는 방법 ... 125
      6.6 여러 가지 확장 문자들 ... 128
      6.7 형식 지정자의 종류 ... 129
      6.8 출력할 데이터의 자릿수 맞추기 ... 130
      6.9 입력할 데이터의 자릿수 맞추기 ... 132
      6.10 여러 데이터를 한 줄로 입력하는 방법 ... 133
      단원정리 ... 135
      연습문제 ... 136
PART 05 제어문
   07장 조건에 대한 판단과 선택
      7.1 조건에 대해 참인 경우만 처리, if 문 ... 141
      7.2 조건에 대해 참 또는 거짓을 구분하여 선택, if else 문 ... 143
      7.3 2개 이상의 조건에 대해 참 또는 거짓을 구분하여 선택, if ∼ else if 문 ... 146
      7.4 특정한 사례를 선택, switch case 문 ... 148
      7.5 한번에 여러 조건을 판단 ... 151
      7.6 범위(구간)로 표시되는 조건의 판단 ... 153
      7.7 switch case 문의 응용 ... 154
      단원정리 ... 156
      연습문제 ... 157
   08장 반복문
      8.1 횟수가 정해진 반복, for 문 ... 161
      8.2 횟수가 정해지지 않은 반복, while 문 ... 167
        8.2.1 먼저 조건식을 판단하여 반복여부를 결정, while 문 ... 168
        8.2.2 먼저 반복한 후에 조건식을 판단하여 반복, do while 문 ... 169
      8.3 for 문의 응용 ... 171
        8.3.1 1부터 n까지의 정수 합을 계산 ... 171
        8.3.2 n!의 계산 ... 174
        8.3.3 중첩된 반복문과 구구단 ... 175
        8.3.4 for 문의 축소와 확장 ... 182
      단원정리 ... 184
      연습문제 ... 185
   09장 처리의 흐름을 조절
      9.1 처리 순서의 흐름을 중단하는 break 문 ... 189
      9.2 처리 순서의 흐름을 계속 이어주는 continue 문 ... 190
      9.3 처리 순서를 이동시키는 goto 문 ... 191
      단원정리 ... 193
      연습문제 ... 194
PART 06 함수
   10장 특별한 기능을 처리하도록 만들어진 프로그램 단위, 함수
      10.1 사용자가 정의하는 함수(user defined function) ... 200
      10.2 함수를 사용하는 프로그램의 구성과 형식 ... 201
      10.3 결과 값(반환 값)이 있는 함수 ... 203
      10.4 함수 main()과 여러 개의 사용자 정의 함수 ... 205
      10.5 void main()과 int main(void) ... 206
      10.6 인자가 3개 이상인 함수 ... 207
      10.7 함수 원형과 사용자 정의 함수의 위치 ... 209
      10.8 매크로 상수와 함수 ... 211
      10.9 재귀 함수와 호출 ... 212
      단원정리 ... 218
      연습문제 ... 219
   11장 변수에 대한 또 다른 속성, 기억 클래스
      11.1 지역(local) 변수와 전역(global) 변수 ... 223
      11.2 자동(auto) 변수 ... 226
      11.3 정적(static) 변수 ... 226
      11.4 외부(extern) 변수 ... 230
      11.5 레지스터(register) 변수 ... 231
      단원정리 ... 233
      연습문제 ... 234
   12장 라이브러리 함수와 응용
      12.1 출력 함수 printf() ... 237
      12.2 입력 함수 scanf() ... 239
      12.3 문자와 문자열 관련 함수 ... 244
        12.3.1 문자 분류 함수 (헤더 파일 〈ctype.h〉) ... 244
        12.3.2 변환 함수(헤더파일 〈stdlib.h〉) ... 245
        12.3.3 문자열 처리와 검색 함수(헤더 파일 〈string.h〉) ... 249
      12.4 수학 계산 함수 (헤더 파일 〈math.h〉) ... 256
      12.5 화면과 커서의 제어 ... 264
        12.5.1 화면 지우기 ... 265
        12.5.2 커서의 위치 제어 ... 267
      12.6 날짜와 시간 관련 함수(헤더 파일 〈time.h〉) ... 270
        12.6.1 현재의 날짜와 시간을 출력 ... 271
        12.6.2 시간 차이의 계산 ... 273
        12.6.3 시간을 지연시키는 함수 ... 275
      12.7 임의의 숫자 난수(헤더 파일 〈stdlib.h〉) ... 278
        12.7.1 난수 생성 ... 278
        12.7.2 매 실행마다 다른 난수를 생성하는 방법(난수 초기화) ... 280
        12.7.3 중복되지 않는 난수의 생성 ... 282
      단원정리 ... 284
      연습문제 ... 285
PART 07 배열(array)과 포인터(pointer)
   13장 번호가 붙은 변수, 배열
      13.1 여러 개의 변수가 필요한 경우 ... 291
      13.2 배열과 변수의 차이 ... 291
      13.3 배열의 출력과 입력 ... 293
      13.4 1차원 배열의 선언과 사용 ... 294
      13.5 배열과 문자열 ... 296
        13.5.1 문자열을 배열에 저장하는 방법 ... 296
        13.5.2 문자열의 입력과 출력 ... 297
      13.6 2차원 배열의 초기화와 출력 ... 299
      13.7 함수와 배열 ... 301
        13.7.1 함수의 인자로 배열을 사용하는 방법 ... 302
        13.7.2 함수의 결과로 배열을 반환하는 방법 ... 304
      단원정리 ... 306
      연습문제 ... 307
   14장 포인터
      14.1 데이터와 메모리 주소 ... 311
      14.2 메모리 주소를 저장하는 포인터 변수 ... 313
      14.3 포인터와 배열 ... 318
      14.4 포인터와 문자열 ... 319
      14.5 포인터에 대한 연산 ... 322
      14.6 포인터를 인자로 사용하는 함수 호출 ... 326
      14.7 포인터 배열 ... 327
      14.8 포인터와 함수 ... 330
        14.8.1 함수 포인터 ... 330
        14.8.2 함수의 결과 값으로 포인터를 반환하는 함수 ... 331
      14.9 키워드 const ... 333
      14.10 main()함수의 인자로 사용하는 포인터 ... 334
      단원정리 ... 339
      연습문제 ... 340
PART 08 사용자가 정의하는 데이터 형
   15장 여러 데이터를 하나로 묶는 구조체
      15.1 구조체가 필요한 경우 ... 345
      15.2 구조체 만들기 ... 346
      15.3 구조체와 데이터 ... 348
        15.3.1 구조체 변수의 초기화와 멤버별 데이터 출력 ... 348
        15.3.2 구조체 변수에 데이터 저장 ... 350
        15.3.3 입력 데이터를 구조체 변수에 저장 ... 351
      15.4 구조체 변수, 구조체 멤버 간의 데이터 저장 ... 352
      15.5 구조체 배열 ... 354
      15.6 구조체 포인터 ... 355
      15.7 구조체 멤버가 배열 또는 포인터인 경우의 데이터 처리 ... 356
      15.8 구조체 형의 크기와 멤버의 위치 ... 358
      15.9 구조체와 함수 ... 360
        15.9.1 함수의 인자로 구조체 변수를 사용 ... 360
        15.9.2 함수의 인자로 구조체 포인터를 사용 ... 361
        15.9.3 함수의 인자로 구조체 배열을 사용 ... 362
        15.9.4 함수의 결과값으로 구조체를 반환하는 함수 ... 363
      15.10 구조체를 헤더파일로 저장하여 사용하는 방법 ... 364
      15.11 구조체 속의 구조체(중첩된 구조체) ... 366
      15.12 자기 참조 구조체 ... 370
      단원정리 ... 375
      연습문제 ... 376
   16장 그 외의 사용자 정의 데이터 형
      16.1 구조체와 비슷하지만 차이가 있는 공용체, union ... 381
      16.2 상수들의 집합을 정수로 대신하는 열거형, enum ... 383
      16.3 비트 필드(bit field) ... 384
      단원정리 ... 386
      연습문제 ... 387
PART 09 파일을 이용한 데이터의 입력과 출력
   17장 파일 출력과 파일 입력
      17.1 파일처리를 위한 기초 지식 ... 391
        17.1.1 파일 열기와 파일 닫기 ... 391
        17.1.2 파일 저장 방식 ... 393
        17.1.3 파일 데이터와 파일 포인터 ... 394
      17.2 텍스트 방식의 파일 다루기 ... 395
        17.2.1 텍스트 방식의 파일 입출력 함수 ... 399
        17.2.2 문자 단위의 파일처리 ... 400
        17.2.3 문자열 단위의 파일처리 ... 406
        17.2.4 입출력 형식을 지정하는 파일 처리 ... 410
        17.2.5 키보드(콘솔)입력과 파일 출력 ... 414
      17.3 이진 방식의 파일 다루기 ... 417
        17.3.1 이진 방식의 파일 출력 ... 418
        17.3.2 이진 방식의 파일 입력 ... 422
      17.4 원하는 블록의 위치에서 파일 읽기와 쓰기가 가능한 랜덤 처리 방식 ... 424
        17.4.1 파일 포인터의 위치를 이동하는 파일 입력 ... 427
      단원정리 ... 430
      연습문제 ... 432
PART 10 고급 프로그래밍 기술
   18장 응용 프로그램 개발을 위해 필요한 방법과 문법들
      18.1 프로젝트와 분할 컴파일 ... 437
        18.1.1 프로젝트 만들기 ... 437
        18.1.2 분할 컴파일 ... 443
        18.1.3 프로젝트 불러오기 ... 446
        18.1.4 Turbo C++에서의 분할 컴파일 ... 448
      18.2 프로그램 실행 중에 기억공간을 확보하는 동적 할당 ... 454
        18.2.1 동적 기억장소 할당과 해제 ... 454
        18.2.2 구조체와 동적 할당 ... 456
      18.3 전처리기 ... 457
        18.3.1 include와 헤더 파일 ... 458
        18.3.2 define과 매크로 ... 461
        18.3.3 미리 정의된 매크로 ... 465
        18.3.4 조건 컴파일 ... 466
      18.4 컴파일과 실행에서 발생되는 오류와 해결 ... 469
      18.5 배포 프로그램 ... 472
      단원정리 ... 478
      연습문제 ... 479
PART 11 응용 프로그래밍
   19장 응용 프로그래밍 part Ⅰ
      19.1 진법 변환 ... 484
        19.1.1 10진수를 2진수로 변환 ... 484
        19.1.2 10진수를 8진수로 변환 ... 493
      19.2 반복문과 수열 ... 495
        19.2.1 등차수열 ... 495
        19.2.2 등비수열 ... 497
        19.2.3 계차수열 ... 499
      19.3 비트 연산과 응용 ... 500
        19.3.1 비트 와이즈 연산 ... 501
        19.3.2 비트 시프트 연산 ... 504
      19.4 난수를 이용한 게임 ... 505
        19.4.1 컴퓨터가 생성한 정수 난수 맞추기 ... 506
        19.4.2 컴퓨터와 하는 가위바위보 게임 ... 508
        19.4.3 구구단 문제풀기 ... 510
      19.5 날짜수의 응용 ... 516
      19.6 기초 통계 계산 ... 519
        19.6.1 대표값 ... 519
        19.6.2 산포도 ... 523
        19.6.3 통계 그래프 ... 526
      19.7 메뉴 선택으로 진행하는 프로그램 ... 532
        19.7.1 메뉴로 진행하는 구구단 프로그램 ... 534
        19.7.2 서브(sub)메뉴가 있는 프로그램 ... 538
      19.8 텍스트 파일처리 응용 프로그램 ... 540
        19.8.1 한 줄씩 데이터를 구분하여 파일 출력 ... 540
        19.8.2 파일 입력 데이터에 대한 기초 통계 계산 ... 541
      19.9 이진 파일처리 응용 프로그램 ... 542
        19.9.1 block 단위 데이터의 파일 출력 ... 542
        19.9.2 block 단위 데이터의 파일 입력 ... 546
        19.9.3 전체 block을 한 번에 파일 입력 ... 549
        19.9.4 파일 입력 데이터에 대한 검색 ... 551
        19.9.5 block 데이터의 삭제 ... 555
        19.9.6 block 데이터의 수정 ... 558
   20장 응용 프로그래밍 part Ⅱ
      20.1 자료 구조 ... 562
        20.1.1 단순 연결 리스트 ... 562
        20.1.2 이중 연결 리스트와 트리 ... 571
        20.1.3 트리의 운행 ... 573
      20.2 데이터 검색(Search) ... 578
        20.2.1 이진(binary) 검색 ... 579
        20.2.2 피보나치(Fibonacci)검색 ... 582
      20.3 데이터 정렬(sort) ... 585
        20.3.1 삽입(insertion) 정렬 ... 586
        20.3.2 bubble 정렬 ... 587
        20.3.3 선택 정렬 ... 591
PART 12 과제와 프로젝트 프로그램(CD)
   21장 과제 프로그램
      [과제 01] 최대 공약수와 최소 공배수 ... 594
      [과제 02] 소수 이하 임의의 자릿수에서 반올림 ... 596
      [과제 03] 비만도 측정과 판정 ... 598
      [과제 04] 고속도로 통행요금 계산 ... 600
      [과제 05] 당구장 이용 요금 계산 ... 601
      [과제 06] 사원 봉급 계산 ... 602
      [과제 07] 승용차 세금 계산 ... 604
      [과제 08] 전력 요금 청구서 ... 605
      [과제 09] 수도 요금 청구서 ... 607
      [과제 10] 행렬의 합, 차 그리고 곱의 계산 ... 609
      [과제 11] 파스칼의 삼각형 ... 610
      [과제 12] 사칙연산 계산기 ... 612
      [과제 13] 숫자 야구게임 ... 613
      [과제 14] 사용자가 생각한 숫자를 컴퓨터가 맞추는 게임 ... 615
      [과제 15] 한자리 디지털 숫자 출력 ... 617
      [과제 16] 주유기 메타 출력 ... 618
      [과제 17] 정수형 숫자의 카운트 ... 619
      [과제 18] 실수형 숫자의 카운트 ... 621
      [과제 19] 문장에 사용된 알파벳, 숫자, 기타문자의 카운트 ... 622
      [과제 20] 서기를 간지로 변환 ... 624
      [과제 21] 특정일로부터 며칠 후 계산 ... 625
      [과제 22] 특정일의 요일 계산 ... 626
      [과제 23] 세계 주요 도시의 현재 시간 ... 627
      [과제 24] stopwatch ... 629
      [과제 25] 동전 던지기 모의실험 ... 632
      [과제 26] 주사위 던지기 모의실험과 막대그래프 출력 ... 633
      [과제 27] 주택복권 당첨 번호 발생기 ... 634
      [과제 28] sine과 cosine 그래프를 동시에 출력 ... 636
      [과제 29] 발 크기에 대한 통계 조사 ... 637
      [과제 30] 파일에 포함된 알파벳 문자 카운트 ... 638
      [과제 31] 파일크기의 계산과 파일내용을 거꾸로 출력 ... 640
      [과제 32] 이용자가 1명인 엘리베이터 운행 제어 ... 642
   22장 프로젝트 프로그램
      [프로젝트 01] 주민등록번호를 이용한 생년월일, 성별, 띠 그리고 만 나이 계산 ... 644
      [프로젝트 02] 도량형 환산 ... 646
      [프로젝트 03] 자동판매기 제어 ... 648
      [프로젝트 04] 임의의 정수형 숫자에 대한 디지털 숫자 출력 ... 650
      [프로젝트 05] 임의의 아라비아 숫자를 로마 숫자로 변환 ... 652
      [프로젝트 06] 2, 8, 10, 16진법 변환 ... 654
      [프로젝트 07] 스택을 이용한 후위 표기법 ... 656
      [프로젝트 08] 스택(stack)을 이용한 계산기 ... 660
      [프로젝트 09] 특정한 월의 바이오리듬(Biorhythm) ... 662
      [프로젝트 10] 로또 추첨과 같은 방식의 로또 번호 생성 ... 665
      [프로젝트 11] 로또당첨에 대한 모의실험 ... 668
      [프로젝트 12] 구구단 학습 프로그램 ... 669
      [프로젝트 13] 정규난수 생성 ... 672
      [프로젝트 14] 대기 행렬 모형 ... 674
      [프로젝트 15] 이용자가 2명인 엘리베이터의 운행제어 ... 676
      [프로젝트 16] 하노이 탑 ... 649
      [프로젝트 17] 랜덤 접근에 의한 파일 데이터의 추가와 변경 ... 681
      [프로젝트 18] 텍스트 파일에 대한 정렬 ... 683
      [프로젝트 19] 이진 파일에 대한 정렬 ... 684
      [프로젝트 20] 학생 성적 파일 관리 ... 686
      [프로젝트 21] 고객 파일 관리 ... 689
      [프로젝트 22] 보간(interploation) 검색 ... 691
      [프로젝트 23] heap 정렬 ... 695
      [프로젝트 24] shell 정렬 후 파일 출력 ... 698
      [프로젝트 25] quick 정렬 후 파일 출력 ... 701
부록
   부록 1 ASCII 코드표 ... 706(
   부록 2 키워드(keyword)와 예약어(reserved word) ... 709(
   부록 3 [여러 종류의 데이터 표] ... 709(
찾아보기 ... 712(
닫기