목차 일부
저자 서문 ... 3
학습 로드맵 ... 4
Part 1 C언어의 기본
1장. 프로그램과 C언어의 이해
01. 프로그램이란? ... 25
프로그램은 합리적인 일의 순서다 ... 26
프로그램을 구성하는 기본 요소 ... 26
프로그램의 입력과 출력 ... 27
C 언어란? ... 28...
더보기
목차 전체
저자 서문 ... 3
학습 로드맵 ... 4
Part 1 C언어의 기본
1장. 프로그램과 C언어의 이해
01. 프로그램이란? ... 25
프로그램은 합리적인 일의 순서다 ... 26
프로그램을 구성하는 기본 요소 ... 26
프로그램의 입력과 출력 ... 27
C 언어란? ... 28
02. C 언어로 프로그램 만들기 ... 29
첫 번째 해야 할 일 : 프로그램 작성 ... 30
두 번째 해야 할 일 : 프로그램 번역 ... 31
컴파일러 사용법 ... 32
Vitamin Quiz : 자동차의 스위치 ... 32
링크(link) ... 36
마지막 단계 : 프로그램 실행 ... 39
컴파일러를 활용한 프로그램 작성과 실행 ... 39
달팽이 우물 탈출 프로그램 실습 ... 42
Vitamin Quiz : 달팽이 우물 탈출 프로그램 ... 43
이것만은 알고 갑시다 ... 44
2장. C 프로그램의 형태
01. 프로그램의 구성과 실행과정 ... 47
02. 메인함수 ... 48
함수에는 머리(head)가 있다 ... 49
모든 일은 몸통에서 처리한다 ... 51
03. 출력함수 ... 53
화면에 문자열 출력하기 ... 53
화면에 정수값 출력하기 ... 54
Exercise 2-1 문자열과 숫자의 화면 출력 ... 55
화면에 문자열과 정수값을 한번에 출력하기 ... 56
화면에 줄 바꾸어 출력하기 ... 56
Exercise 2-2 줄바꿈 출력 ... 57
04. 저장 ... 58
변수를 선언하는 방법 ... 59
변수에 값을 저장하자 ... 60
변수 선언과 동시에 값을 저장해보자(초기화) ... 61
Exercise 2-3 정수형 변수의 출력 ... 61
05. 입력함수 ... 63
정수값 하나를 입력하자 ... 63
여러 개의 정수값을 입력하자 ... 65
scanf 함수 사용시 주의할 점 ... 65
Exercise 2-4 정수값 출력 ... 65
06. 프로그램을 작성할 때 꼭 필요한 내용들 ... 67
프로그램을 작성할 때는 순서가 있다 ... 67
자유로움은 자율을 필요로 한다 ... 68
주석은 선택이 아니라 필수다 ... 69
프로그램 3일만 하면 작명소를 차린다 ... 70
이것만은 알고 갑시다 ... 72
3장. 데이터의 표현과 연산(Ⅰ)
01. 숫자 데이터의 처리 ... 77
숫자상수에는 정수와 실수가 있다 ... 77
숫자상수를 저장할 변수를 선언하자 ... 78
숫자 데이터는 어떻게 연산되는가? ... 80
Vitamin Quiz : 자동 형변환 ... 82
실수형 데이터의 입출력 ... 82
Exercise 3-1 프로그램 만들기 ① 전기요금 계산 ... 83
02. 문자 데이터의 처리 ... 84
문자상수를 표현해 보자 ... 84
문자상수를 저장하자 ... 86
문자를 입출력하자 ... 87
Exercise 3-2 프로그램 만들기 ② Vitamin-C 야구단 1 ... 87
03. 문자열은 특별하다 ... 88
문자들이 모이면 문자열이 된다 ... 89
문자열을 저장하는 자료형은 없다 ... 90
문자열을 입출력하자 ... 91
Exercise 3-3 프로그램 만들기 ③ Vitamin-C 야구단 2 ... 92
04. 형변환과 여러 가지 연산자 ... 94
형변환 규칙 ... 94
Exercise 3-4 프로그램 만들기 ④ 평균값 구하기 ... 95
몫 연산자와 나머지 연산자 ... 96
형변환 연산자 ... 98
Exercise 3-5 프로그램 만들기 ⑤ 시간계산 1 ... 98
Exercise 3-6 프로그램 만들기 ⑥ 시간계산 2 ... 100
이것만은 알고 갑시다 ... 101
4장. 데이터의 표현과 연산(Ⅱ)
01. 진법 변환 ... 105
각 진법의 수를 10진수로 바꾸자 ... 106
Vitamin Quiz : 4비트의 진법 변환 ... 107
Exercise 4-1 진법 변환 ... 108
10진수를 다른 진법으로 바꾸자 ... 109
02. 다양한 정수의 표현법과 자료형 ... 110
정수형 상수를 다른 진법으로 표현하자 ... 110
정수를 다른 진법으로 입출력하자 ... 111
Exercise 4-2 진법 변환 프로그램 ... 112
Vitamin Quiz : 접두어를 사용한 입력 ... 113
여러 가지 정수형 자료형 ... 114
03. 정수값이 저장되는 방법 ... 115
정수값의 비트 표현과 저장 값의 범위 ... 115
정수형 변수를 양수값 전용으로 사용하자 ... 116
Exercise 4-3 시간 단위 변경 프로그램 ... 117
04. 음수까지 포함한 정수형 ... 118
음수값은 2의 보수로 저장한다 ... 119
음수값을 포함한 저장 범위 ... 121
Exercise 4-4 거리와 속력 ... 122
05. 실수값의 표현과 자료형 ... 123
실수형 상수를 지수표현법으로 사용하자 ... 123
지수 형태로 입출력하자 ... 125
여러 가지 실수형 자료형 ... 126
Exercise 4-5 실수형 자료형의 계산 ... 127
실수값의 비트표현과 저장범위 ... 128
06. 문자 데이터의 저장 ... 131
Exercise 4-6 아스키코드값을 10진수로 출력하는 프로그램 ... 132
07. 자료형의 크기를 확인하자 ... 133
이것만은 알고 갑시다 ... 137
5장. 입출력 함수
01. printf 함수 제대로 사용하기 ... 141
전달인자가 문자열 하나인 경우 ... 142
Exercise 5-1 "/*"와 "*/"를 출력하기 ... 144
문자열 외에 출력할 데이터가 있는 경우 ... 145
02. 변환문자열의 정확한 사용법 ... 148
정수형 변환문자열의 선택 ... 148
Vitamin Quiz : 특별한 기능을 수행하는 아스키 문자들 ... 150
정수형과 문자형 변환문자열의 선택 ... 151
Exercise 5-2 정수값과 문자열을 출력하기 ... 151
03. 세련된 출력을 지원하는 변환문자열의 옵션 ... 152
출력될 공간을 확보하는 필드옵션 ... 152
플래그옵션 ... 154
Exercise 5-3 문자와 숫자의 정렬 ... 155
04. scanf 함수 제대로 사용하기 ... 156
scanf 함수의 기본적인 사용법 ... 156
scanf 함수는 변환문자열을 정확히 사용해야 한다 ... 159
Exercise 5-4 BMI를 구하는 프로그램 만들기 ... 159
Exercise 5-5 다양한 자료형의 입출력 ... 162
이것만은 알고 갑시다 ... 164
6장. 선택문
01. 조건식에 사용되는 연산자 ... 169
관계연산자 ... 170
Vitamin Quiz : 10<a<20이 참인 이유 ... 171
논리연산자 ... 172
Vitamin Quiz : 연산식 만들기 ... 173
02. if문을 사용한 선택문 ... 174
가장 간단한 if문 ... 174
Exercise 6-1 절대값 출력하기 ... 176
if~else 구문을 사용한 선택문 ... 177
Exercise 6-2 유료입장과 무료입장 ... 179
if~else if~else 구문을 사용한 선택문 ... 180
Exercise 6-3 if~else if~else 구문을 사용하여 프로그램 만들기 ... 183
else의 결합 문제(dangling else문제) ... 184
03. switch~case문을 사용한 선택문 ... 186
다중선택에 사용된다 ... 186
Exercise 6-4 switch~case의 활용 ... 189
이것만은 알고 갑시다 ... 191
7장. 반복문
01. 반복문 ... 195
02. do~while문 ... 196
03. while문 ... 198
while문은 조건을 먼저 검사한다 ... 198
조건식이 반복되는 중간에 있다면? ... 199
몇 번을 반복할 것인가? ... 201
Exercise 7-1 입력값을 반복하여 누락 ... 201
Exercise 7-2 제한된 조건에서 반복되는 프로그램 만들기 ... 203
Vitamin Quiz : 반복 횟수 계산 ... 204
04. 증감연산자 ... 205
Exercise 7-3 while문과 증감연산자를 사용한 프로그램 ... 208
05. for문 ... 209
Exercise 7-4 for문을 사용한 프로그램 ... 212
06. 다중 반복문 ... 213
Exercise 7-5 다중 for문을 사용한 프로그램 ... 216
07. 무한 반복문 ... 217
08. 반복문 제어 ... 218
break로 반복문을 빠져 나가자 ... 218
Vitamin Quiz : break문이 포함된 다중 반복문 ... 220
continue문은 반복문의 일부를 건너뛴다 ... 220
Exercise 7-6 반복문과 반복문 제어 ... 221
이것만은 알고 갑시다 ... 222
8장. 함수
01. 함수 ... 227
함수 만들기(정의) ... 228
함수 사용하기(호출) ... 231
Exercise 8-1 세금을 계산하는 함수 ... 231
Exercise 8-2 함수를 사용한 계산 프로그램 ... 236
함수의 선언 ... 237
Exercise 8-3 함수를 사용한 프로그램 작성 ... 240
02. 다양한 형태의 함수 ... 241
매개변수가 없는 함수 ... 241
리턴값이 없는 함수 ... 242
Vitamin Quiz : 입출력 함수의 리턴값 ... 242
리턴값과 매개변수가 모두 없는 함수 ... 243
Exercise 8-4 다양한 형태의 함수 민들기 ... 244
03. 함수의 필요성 ... 245
Exercise 8-5 함수를 사용한 사칙연산 프로그램 ... 248
이것만은 알고 갑시다 ... 249
Part 2 C언어의 응용
9장. 배열
01. 배열의 선언과 사용 ... 255
배열의 선언 ... 256
Vitamin Quiz : 평균 나이 구하기 ... 256
배열의 사용 ... 257
배열과 반복문 ... 259
Exercise 9-1 가장 큰 배열요소 값 찾기 ... 261
배열의 초기화 ... 262
Vitamin Quiz : 배열을 사용한 프로그램의 수정 ... 263
유연성 있게 배열 다루기 ... 264
Exercise 9-2 배열의 데이터를 처리하는 프로그램 ... 265
02. 문자열을 저장하는 문자배열 ... 266
문자배열의 선언과 사용 ... 266
문자열은 널문자가 완성한다! ... 267
scanf 함수를 사용한 문자열의 입력 ... 269
Exercise 9-3 문자열의 출력 ... 271
문자배열의 초기화 ... 272
Exercise 9-4 문자열의 복사와 출력 ... 273
이것만은 알고 갑시다 ... 275
10장. 포인터
01. 포인터의 정의와 사용 ... 279
포인터란 무엇인가? ... 280
포인터를 구하자 - 주소연산자 ... 282
포인터를 사용하자 - 참조연산자 ... 284
포인터를 저장하자 - 포인터변수 ... 287
Vitamin Quiz : 포인터와 포인터변수 ... 289
Exercise 10-1 포인터를 사용하여 두 변수의 값을 바꾸는 프로그램 ... 290
02. 포인터는 왜 필요한가? ... 291
함수들은 독립된 기억공간을 가진다 ... 291
포인터로 다른 함수의 기억공간을 사용한다 ... 293
함수의 한계를 극복한다 ... 295
Vitamin Quiz : exchange 함수의 매개변수가 int형 변수라면? ... 297
Exercise 10-2 함수를 호출하여 세 변수의 값을 정렬하는 프로그램 ... 299
03. 포인터에 관한 중요한 질문 ... 300
포인터와 포인터변수의 크기는 몇 바이트인가? ... 300
포인터와 포인터변수는 자동 형변환이 가능한가? ... 302
이것만은 알고 갑시다 ... 304
11장. 배열과 포인터
01. 포인터로 배열 다루기 ... 309
포인터로 배열요소를 참조하자 ... 309
배열명은 포인터! ... 312
Exercise 11-1 배열의 평균값 구하기 ... 313
포인터변수로 배열요소를 참조하자 ... 314
Vitamin Quiz : 배열의 중간에서 배열요소를 참조하기 ... 315
배열명은 포인터변수가 아니다 ... 316
Vitamin Quiz : 할당되지 않은 기억공간을 가리키는 포인터변수 ... 317
Exercise 11-2 배열의 값들을 거꾸로 출력하는 프로그램 ... 318
02. 배열을 처리하는 함수 ... 319
배열의 값을 출력하는 함수 ... 319
배열에 값을 입력하는 함수 ... 321
배열의 평균을 구하는 함수 ... 322
Exercise 11-3 배열에서 최소값 구하기 ... 325
이것만은 알고 갑시다 ... 327
12장. 문자열의 처리
01. 문자열의 정체 ... 331
문자열상수는 포인터다! ... 332
포인터변수로 문자열 처리하기 ... 334
Vitamin Quiz : 문자열을 중간부터 출력하기 ... 334
Exercise 12-1 문자열에서 원하는 문자만 골라서 출력하기 ... 337
문자열상수의 두 얼굴 ... 338
문자배열에 문자열상수를 저장하려면? ... 339
02. 중요한 문자열 처리 함수 ... 340
문자열 복사함수(strcpy) ... 341
문자열의 길이를 계산하는 함수 ... 342
Exercise 12-2 문자열을 교환하는 프로그램 ... 342
문자열을 비교하는 함수 ... 344
Exercise 12-3 strlen 함수를 사용한 프로그램 ... 344
두 개의 문자열을 붙이는 함수 ... 346
Exercise 12-4 strcmp 함수를 사용한 프로그램 ... 346
Exercise 12-5 stracat 함수를 사용한 프로그램 ... 348
03. 문자열의 입출력 ... 349
한 줄을 모두 입력하는 함수(gets) ... 349
문자열을 출력하는 함수(puts) ... 350
Exercise 12-6 여러 가지 문자열 처리 함수를 사용한 프로그램 ... 353
04. 문자 입출력 함수 ... 354
하나의 문자를 입출력 하자 ... 354
한 줄을 입출력 하자 ... 355
여러 줄을 입출력 하자 ... 358
Exercise 12-7 한 줄씩 입출력하는 프로그램 ... 360
이것만은 알고 갑시다 ... 361
13장. 변수의 영역과 데이터의 전달
01. 자동변수(auto variable) ... 367
자동변수의 생존기간 ... 368
기억공간의 할당과 회수 ... 370
자동변수에 메모리가 할당되는 방법 ... 372
Vitamin Quiz : 메모리의 스택 영역에 생기는 변화 ... 373
02. 함수들 간의 데이터 전달 방법 ... 374
값을 복사해서 넘겨준다 ... 375
포인터를 사용한다 ... 376
Exercise 13-1 포인터를 주고 함수를 호출하는 프로그램 ... 378
포인터를 리턴하는 함수 ... 379
03. 정적 변수(static variable) ... 382
Exercise 13-2 정적 변수를 사용한 프로그램 ... 385
04. 외부 변수(extern variable) ... 386
Exercise 13-3 외부 변수를 사용한 프로그램 ... 388
이것만은 알고 갑시다 ... 389
Part 3 C언어의 확장
14장. 2차원 배열과 포인터배열
01. 2차원 배열의 선언과 초기화 ... 395
2차원 배열은 배열의 배열이다 ... 396
배열요소를 참조하자 ... 397
Vitamin Quiz : 2차원 배열이 메모리에 할당되는 방식 ... 398
2차원 배열은 2중 for문으로 처리한다 ... 398
2차원 배열의 초기화 ... 400
Exercise 14-1 2차원 배열의 논리적 구조 ... 401
Exercise 14-2 2차원 배열의 초기화와 행과 열의 합 계산 ... 403
02. 2차원 문자배열 ... 404
각 행이 하나의 문자열을 저장한다 ... 404
2차원 문자배열의 초기화 ... 405
Exercise 14-3 낭비되는 기억공간 ... 407
03. 포인터배열 ... 408
포인터배열을 선언하고 참조하자 ... 408
포인터배열의 초기화 ... 410
포인터배열은 2차원 배열인가? ... 411
Vitamin Quiz : 2차원 배열과 포인터배열의 차이점 ... 411
Exercise 14-4 2차원 문자배열과 포인터배열을 연결하기 ... 414
이것만은 알고 갑시다 ... 416
15장. 응용포인터
01. 포인터의 응용 ... 421
02. 다중 포인터 ... 422
이중포인터를 사용하여 변수를 참조해 보자 ... 422
이중포인터변수 ... 424
Vitamin Quiz : 삼중포인터변수 선언 ... 424
두 포인터변수를 교환하는 함수를 만들자 ... 425
Exercise 15-1 포인터배열의 배열명을 전달인자로 받는 함수 ... 429
03. 배열 포인터 ... 430
배열명의 정체 ... 430
배열포인터가 가리키는 것은? ... 432
2차원 배열의 배열명은 배열포인터이다 ... 434
배열포인터변수 ... 435
Vitamin Quiz : 2차원 배열을 가리키는 포인터 ... 436
Exercise 15-2 2차원 문자배열에 입출력하는 함수 만들기 ... 437
2차원 배열에서 배열명으로 기억공간을 참조하는 원리 ... 438
04. 함수 포인터 ... 441
함수명은 포인터다 ... 441
함수포인터변수 ... 442
함수포인터는 어디에 사용하는가? ... 443
Exercise 15-3 exchange 함수와 func 함수 ... 446
05. void 포인터 ... 447
void 포인터변수 ... 448
void 포인터변수를 사용한 프로그램 ... 449
이것만은 알고 갑시다 ... 452
16장. 메모리 동적 할당
01. 동적 할당 함수(malloc, free) ... 457
malloc 함수를 사용하여 메모리를 할당 받자 ... 458
동적 할당 되는 메모리는 반납해야 한다 ... 460
동적 할당 되는 메모리는 확인해야 한다 ... 461
Exercise 16-1 일교차 출력 프로그램- 메모리의 동적 할당 ... 462
02. 동적 할당 기억공간의 활용 ... 463
동적 할당 된 기억공간을 배열로 사용해 보자 ... 463
동적 할당을 사용하여 문자열을 처리하자 ... 465
Exercise 16-2 행렬의 합 - 메모리 동적 할당 ... 468
가변배열을 함수로 출력하자 ... 469
03. 메인함수의 전달인자 ... 470
메인함수는 전달인자를 어떻게 받는가? ... 470
메인함수의 전달인자를 사용하는 방법 ... 472
명령행 전달인자와 동적 할당을 사용한 문자열 입력 예제 ... 473
Exercise 16-3 반복 출력되는 문자열 ... 477
04. 기타 동적 할당 함수 ... 479
calloc 함수는 배열을 할당 받고 초기화한다 ... 479
realloc 함수로 기억공간의 크기를 조절한다 ... 480
이것만은 알고 갑시다 ... 483
17장. 구조체
01. 구조체의 형 선언과 멤버 참조 ... 487
struct 예약어를 사용하여 구조체의 형태를 만든다 ... 488
구조체 변수는 멤버를 참조하여 사용한다 ... 489
구조체에는 다양한 멤버를 사용할 수 있다 ... 491
Exercise 17-1 구조체의 형 선언과 멤버 참조 ... 491
구조체변수를 초기화하자 ... 494
Exercise 17-2 구조체의 멤버 참조 ... 495
구조체변수를 함수의 전달인자로 사용하자 ... 498
Exercise 17-3 구조체변수를 전달인자로 받고 리턴하는 함수 ... 500
02. 구조체배열 ... 501
구조체배열을 선언하고 배열요소를 참조하자 ... 502
구조체배열의 초기화 ... 503
03. 구조체 포인터 ... 505
구조체 포인터로 멤버를 참조하자 ... 505
간접멤버참조연산자 ... 507
Exercise 17-4 구조체배열을 처리하는 함수 ... 509
04. 공용체 ... 510
05. 열거형 ... 512
06. typedef를 사용한 형 재정의 ... 514
이것만은 알고 갑시다 ... 516
18장. 파일 입출력
01. 파일 입출력의 개념 ... 519
스트림 파일은 무엇인가? ... 519
스트림 파일을 사용하는 이유 ... 520
02. 파일 개방 ... 521
파일을 개방하기 위해서 fopen함수를 사용한다 ... 521
fopen 함수의 리턴값은 무엇인가? ... 522
개방한 파일은 fclose 함수로 닫는다 ... 526
03. 파일 입출력 과정 ... 527
하나의 문자를 파일로부터 입력하자(fgetc) ... 527
파일로부터 데이터가 입력되는 과정 ... 529
하나의 문자를 파일에 출력하자(fputc) ... 532
기본적으로 개방되는 표준 입출력 스트림 파일 ... 534
Exercise 18-1 텍스트 뷰어 만들기 ... 537
04. 다양한 입출력 함수 ... 538
문자열을 한번에 입출력하자(fgets, fputs) ... 538
gets와 puts 대신 fgets와 fputs 함수를 사용하자 ... 542
다양한 자료형에 맞게 입출력하자(fscanf, fprintf) ... 543
스트림 파일의 버퍼는 비워줘야 할 때가 있다(fflush) ... 546
Exercise 18-2 데이터파일 만들기 ... 548
이것만은 알고 갑시다 ... 549
19장. 전처리와 분할 컴파일
01. 전처리 명령어 ... 553
include 명령으로 파일을 포함한다 ... 554
define 명령어로 매크로상수를 만들자 ... 556
define 명령어로 매크로함수를 만들자 ... 558
조건부 컴파일 전처리 명령어 ... 561
02. const를 사용한 기호상수 ... 565
const 변수를 상수로 만든다 ... 565
포인터변수를 상수화 시키는 것은 특별하다 ... 566
03. 분할 컴파일 ... 568
분할 컴파일을 해보자 ... 569
외부 변수의 선언과 정의 ... 572
Exercise 19-1 분할 컴파일 연습 ... 574
외부 정적변수는 하나의 모듈에서만 사용한다 ... 575
이것만은 알고 갑시다 ... 577
20장. 연산자 정리
01. 비트 연산자 ... 581
비트별 논리곱 연산자 ... 581
비트별 배타적 논리합 ... 583
비트별 논리합 연산자 ... 584
비트부정 연산자 ... 585
비트이동 연산자 ... 586
Exercise 20-1 비트열 출력하기 ... 589
02. 조건 연산자 ... 590
03. 연산자 우선순위와 결합 방향 ... 591
이것만은 알고 갑시다 ... 593
아스키코드표 ... 594
정답과 해설
더보기 닫기