
BỘ GIAO THÔNG VẬN TẢI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI
LÊ CHÍ LUẬN (Chủ biên)
LÊ TRUNG KIÊN - LÊ THỊ CHI
PHẠM THỊ THUẬN - NGUYỄN THỊ KIM HUỆ
GIÁO TRÌNH
NGÔN NGỮ LẬP TRÌNH C
NHÀ XUẤT BẢN KHOA HỌC TỰ NHIÊN VÀ CÔNG NGHỆ
HÀ NỘI - 2020

3
MỤC LỤC
DANH MỤC BẢNG ................................................................................ 12
DANH MỤC HÌNH ................................................................................ 13
DANH MỤC CHỮ VIẾT TẮT .............................................................. 14
LỜI NÓI ĐẦU ......................................................................................... 15
Chƣơng 1. CÁC KHÁI NIỆM CƠ BẢN CỦA NGÔN NGỮ C .......... 21
1.1. GIỚI THIỆU NGÔN NGỮ C ............................................................ 21
1.1.1. Lịch sử ngôn ngữ lập trình C .......................................................... 21
1.1.2. Các tính chất của ngôn ngữ C. ........................................................ 22
1.2. TẬP KÝ TỰ HỢP LỆ TRONG C ..................................................... 23
1.2.1. Tập ký tự ......................................................................................... 23
1.2.2. Từ khóa ........................................................................................... 24
1.2.3. Định danh ........................................................................................ 24
1.3. MỘT SỐ QUY ƢỚC KHI VIẾT CHƢƠNG TRÌNH ....................... 25
1.3.1. Chƣơng trình đầu tiên ..................................................................... 25
1.3.2. Cấu trúc chƣơng trình viết trong C ................................................. 26
1.3.2.1. Phần tài liệu ................................................................................. 28
1.3.2.2. Phần liên kết (Bao hàm tệp) ........................................................ 29
1.3.2.3. Phần định nghĩa marco................................................................ 30
1.3.2.4. Khai báo nguyên mẫu .................................................................. 31
1.3.2.5. Phần định nghĩa các cấu trúc ...................................................... 31
1.3.2.6. Định nghĩa hàm ........................................................................... 32
1.3.2.7. Hàm main() .................................................................................. 32
1.3.2.8. Câu lệnh ....................................................................................... 33
1.3.2.9. Chú thích ...................................................................................... 34
1.3.3. Trình tự các bƣớc thực thi một chƣơng trình viết bằng C .............. 35
1.4. KIỂU DỮ LIỆU TRONG C .............................................................. 37
1.4.1. Kiểu dữ liệu nguyên thủy ................................................................ 39

4
1.4.1.1. Kiểu ký tự ..................................................................................... 39
1.4.1.2. Kiểu nguyên ................................................................................. 39
1.4.1.3. Kiểu thực ...................................................................................... 39
1.4.1.4. Kiểu void ...................................................................................... 40
1.4.2. Kiểu dữ liệu dẫn xuất ...................................................................... 40
1.4.2.1. Bổ từ signed và unsigned ............................................................. 41
1.4.2.2. Bổ từ short và long ....................................................................... 42
1.4.3. Kiểu dữ liệu do ngƣời dùng định nghĩa. ......................................... 43
1.5. BIẾN VÀ HẰNG ............................................................................... 43
1.5.1. Biến ................................................................................................. 43
1.5.1.1. Định nghĩa ................................................................................... 43
1.5.1.2. Khai báo biến ............................................................................... 44
1.5.1.3. Khai báo và khởi tạo giá trị cho các biến .................................... 44
1.5.1.4. Phạm vi của biến .......................................................................... 45
1.5.2. Hằng ................................................................................................ 46
1.5.2.1. Định nghĩa ................................................................................... 46
1.5.2.2. Khai báo hằng sử dụng từ khóa const ......................................... 48
1.5.2.3. Khai báo hằng sử dụng chỉ thị #define ........................................ 48
1.5.2.4. Phân loại hằng ............................................................................. 49
1.6. BIỂU THỨC VÀ PHÉP TOÁN ........................................................ 51
1.6.1. Toán tử gán ..................................................................................... 51
1.6.2. Ép kiểu dữ liệu ................................................................................ 51
1.6.3. Biểu thức ......................................................................................... 53
1.6.3.1. Định nghĩa biểu thức ................................................................... 53
1.6.3.2. Biểu thức số học ........................................................................... 53
1.6.3.3. Biểu thức logic ............................................................................. 54
1.6.3.4. Biểu thức điều kiện....................................................................... 55
1.6.4. Các toán tử ...................................................................................... 55
1.6.4.1. Toán tử số học .............................................................................. 56
1.6.4.2. Toán tử quan hệ ........................................................................... 57

5
1.6.4.3. Toán tử logic ................................................................................ 59
1.6.4.4. Toán tử tăng giảm ........................................................................ 60
1.6.4.5. Toán tử gán .................................................................................. 62
1.6.4.6. Toán tử bit .................................................................................... 63
1.7. MỘT SỐ TOOL SỬ DỤNG .............................................................. 68
1.7.1. Turbo C ........................................................................................... 68
1.7.1.1. Gọi Turbo C ................................................................................. 68
1.7.1.2. Soạn thảo chương trình mới ........................................................ 69
1.7.1.3. Ghi chương trình đang soạn thảo vào đĩa ................................... 71
1.7.1.4. Thực hiện chương trình ............................................................... 72
1.7.1.5. Chạy chương trình ....................................................................... 72
1.7.2. DevC ............................................................................................... 72
1.7.2.1. Soạn thảo chương trình C bằng DevC++ ................................... 72
1.7.2.2. Thực hiện chương trình ............................................................... 74
BÀI TẬP CHƢƠNG 1 .............................................................................. 76
A. BÀI TẬP CÓ LỜI GIẢI ...................................................................... 76
B. BÀI TẬP TỰ GIẢI .............................................................................. 80
Chƣơng 2. CÁC LỆNH NHẬP - XUẤT DỮ LIỆU TRONG C .......... 89
2.1. NHẬP XUẤT DỮ LIỆU ................................................................... 89
2.1.1. Hàm kết xuất dữ liệu printf() .......................................................... 89
2.1.2. Hàm nhập liệu scanf() ..................................................................... 96
2.1.3. Hàm đọc và ghi tệp trong C .......................................................... 102
2.1.3.1. Hàm fprintf() .............................................................................. 102
2.1.3.2. Hàm fscanf() .............................................................................. 103
2.2. HÀM NHẬP/XUẤT KÍ TỰ VÀ DÒNG VÀO STDIN .................. 104
2.2.1. Dòng vào stdin .............................................................................. 104
2.2.1.1. Hàm gets() .................................................................................. 105
2.2.1.2. Hàm getchar() ............................................................................ 107
2.2.2. Các hàm xuất ký tự puts(), putchar() ............................................ 110
2.2.2.1. Hàm puts() ................................................................................. 110

6
2.2.2.2. Hàm putchar() ............................................................................ 111
2.2.3. Các hàm vào ra trên màn hình, bàn phím ..................................... 112
2.2.3.1. Hàm getch() ............................................................................... 112
2.2.3.2. Hàm getche() .............................................................................. 113
2.2.3.3. Hàm putch() ............................................................................... 114
2.2.3.4. Hàm kbhit() ................................................................................ 115
2.3. MỘT SỐ VÍ DỤ .............................................................................. 115
BÀI TẬP CHƢƠNG 2 ............................................................................ 118
A. BÀI TẬP CÓ LỜI GIẢI .................................................................... 118
B. BÀI TẬP TỰ GIẢI ............................................................................ 123
Chƣơng 3. CÁC CẤU TRÚC PHÂN NHÁNH VÀ VÒNG LẶP ...... 125
3.1. CẤU TRÚC PHÂN NHÁNH .......................................................... 126
3.1.1. Câu lệnh điều kiện If ..................................................................... 126
3.1.1.1. Câu lệnh điều kiện dạng khuyết ................................................. 126
3.1.1.2. Câu lệnh điều kiện đầy đủ .......................................................... 129
3.1.1.3. Câu lệnh điều kiện else… if ....................................................... 131
3.1.1.4. Câu lệnh điều kiện lồng nhau .................................................... 135
3.1.2. Cấu trúc switch ............................................................................. 144
3.1.3. Toán tử goto và nhãn .................................................................... 152
3.1.3.1. Cú pháp ...................................................................................... 152
3.1.3.2. Hoạt động .................................................................................. 152
3.2. CẤU TRÚC VÒNG LẶP (FOR, WHILE, DO… WHILE) ............ 156
3.2.1. Cấu trúc vòng lặp For ................................................................... 157
3.2.1.1. Cú pháp ...................................................................................... 157
3.2.1.2. Hoạt động .................................................................................. 157
3.2.1.3. Sơ đồ khối .................................................................................. 158
3.2.2. Cấu trúc vòng lặp while ................................................................ 167
3.2.2.1. Cú pháp ...................................................................................... 167
3.2.2.2. Hoạt động .................................................................................. 168
3.2.2.3. Sơ đồ khối .................................................................................. 168

