Giáo trình Lập trình C căn bản

Tóm tắt Giáo trình Lập trình C căn bản: ...áp lệnh if (biểu thức luận lý 1) ) từ khóa if, else if, else phải viết bằng chữ thường khối lệnh 1; ) kết quả của biểu thức luận lý 1, 2..n phải là else if (biểu thức luận lý 2) đúng (≠ 0) hoặc sai (= 0) khối lệnh 2; else if (biểu thức luận lý n-1) # Nếu khối lệnh 1, 2n bao gồm từ 2 l...n xét kết quả. Ví dụ 19: Vẽ hình chữ nhật đặc có chiều rộng = 10 hàng. Hàng thứ 1 = 10 số 0, hàng thứ 2 = 10 số 1 Dòng File Edit Search Run Compile Debug Project Option Window Help 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* Ve hinh chu nhat bang...n đầu với vị trí bắt đầu và số kí tự chỉ định. Ví dụ: Chuỗi ban đầu "Le Thuy Doan Trang". Nếu vị trí ban đầu là 14 và số kí tự chỉ định là 5 thì chuỗi đích sẽ là "Trang" 20. Viết chương trình nhập vào 1 chuỗi nguồn, ví dụ "Nguyen Minh Long", sau đó nhập vào 1 chuỗi con, ví dụ "Minh", chương...

pdf136 trang | Chia sẻ: havih72 | Lượt xem: 163 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Lập trình C căn bản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
àm printf. 
13.10 Chạy từng bước 
13.10.1 Mỗi lần 1 bước 
Ở mỗi bước thực hiện ta phải bấn phím F7. Với lần bấm F7 đầu tiên, dòng đầu tiên trong chương 
trình (dòng main()) sẽ được làm sáng, dòng được làm sáng này được gọi là dòng chuẩn bị thực hiện, và 
nó sẽ được thực hiện ở lần bấm phím F7 tiếp theo. Mỗi lần bấm phím F7 dòng đang đuợc làm sáng sẽ 
được thực hiện, sau đó trở về màu bình thường, và tùy theo nội dung của dòng đó mà một dòng lệnh tiếp 
theo nào đó sẽ được làm sáng để chuẩn bị thực hiện ở bước tiếp theo. 
Ta cũng có thể dùng phím F8 thay cho F7 với những dòng không có lời gọi hàm được khai báo 
trong chương trình. Sự khác nhau giữa F7 và F8 chỉ xảy ra khi dòng được làm sáng có lời gọi hàm được 
khai báo trong chương trình. 
Như vậy nhờ chạy từng bước, ta có thể dễ dàng nắm được các lỗi logic trong chương trình. 
13.10.2 Tái lập lại quá trình gỡ rối 
Bấm Ctrl-F2 hoặc vào menu Run chọn Program reset. Khi đó bộ nhớ dùng cho việc gỡ rối sẽ được 
giải tỏa, không có dòng nào được làm sáng và kết thúc quá trình gỡ rối. 
Giáo trình Lập trình C căn bản Trang 123 
13.10.3 Dùng cửa số Watch 
Lần từng bước thường được dùng kèm với việc sử dụng cửa sổ Watch để theo dõi giá trị của biến 
trong mỗi bước thực hiện để dễ tìm ra nguyên nhân chương trình thực hiện sai. 
Để làm điều đó ta phải nhập vào các biến cần theo dõi, bằng cách chọn mục Add watch của menu 
Break/Watch hoặc có thể bấm Ctrl-F7, sau đó nhập tên biến vào tại vị trí con trỏ trong cửa sổ Add watch 
và bấm Enter. Để nhập thêm tên biến vào cửa sổ này phải lập lại chức năng này hoặc bấm phím Insert. 
Trong soạn thảo nếu chưa nhìn thấy cửa sổ Watch, ta bấm phím F5, khi đó trên màn hình sẽ đồng 
thời hiện ra cả 2 cửa sổ, để chuyển đổi giữa 2 cửa sổ này bấm phím F6. Mỗi biến trên cửa sổ Watch thực 
hiện trên 1 dòng. Khi cửa sổ Watch được chọn sẽ có 1 dòng được làm sáng để chỉ rằng biến đó đang được 
chọn. Giá trị trong cửa sổ Watch sẽ thay đổi theo kết quả của từng bước thực hiện. 
13.11 Sử dụng Help (Giúp đỡ) 
- Ấn phím F1 để kích hoạt màn hình Help chính. 
- Muốn xem Help của hàm trong soạn thảo, di chuyển con trỏ đến vị trí hàm đó ấn tổ hợp 
phím Ctrl - F1 
- Ấn tổ hợp phím Shift - F1 để xem danh sách các mục Help 
- Ấn tổ hợp phím Alt - F1 để quay về màn hình Help trước đó. 
Hanoi Aptech Computer Education Center 
Giáo trình Lập trình C căn bản Trang 124 
Bài 14 : 
CÁC HỆ ĐẾM 
14.1 Khái niệm 
Các chữ số cơ bản của một hệ đếm là các chữ số dùng để biểu diễn mọi số trong hệ đếm ấy. 
Hệ đếm thường gặp nhất là hệ thập phân (hệ 16). Nhưng do bản chất nhị phân của các thiết bị 
điện tử cho nên hầu hết dạng biểu diễn dữ liệu và các phép đại số đều thực hiện bằng hệ nhị phân 
(hệ 2). Hệ bát phân (hệ 8) rất ít dùng và hệ thập phân (hệ 10) là hệ chúng ta đang sử dụng để biểu 
diễn một con số nào đó trong cuộc sống hằng ngày. 
Ví dụ 1: Hệ nhị phân gồm 2 chữ số : 0, 1 
 Hệ bát phân gồm 8 chữ số : 0, 1, 2, 3, 4, 5, 6, 7 
 Hệ thập phân gồm 10 chữ số : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 
 Hệ thập lục phân gồm 16 chữ số : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 
 Các chữ số trong một hệ đếm được sắp xếp theo quy tắc: Bất kỳ cơ số N nguyên dương 
nào, có N ký hiệu khác nhau để biểu diễn các số trong hệ thống. Giá trị của N ký hiệu này được 
sắp xếp từ 0 đến N-1. 
Ví dụ 2: Hệ nhị phân có cơ số N = 2 : các chữ số được đánh từ 0..1 
 Hệ bát phân có cơ số N = 8 : các chữ số được đánh từ 0..7 
 Hệ thập phân có cơ số N = 10 : các chữ số được đánh từ 0..9 
 Hệ thập lục phân có cơ số N = 16 : các chữ số được đánh từ 0..9, A..F 
 Do hệ thập lục phân có 16 chữ số, mà trong hệ thống chữ viết chỉ biểu diễn được 9 chữ 
số, vì vậy người ta chọn các ký tự A..F để biểu diễn 10..15 và nó cũng được xem như 1 chữ số 
(A, BF) thay vì phải viết 10, 1115 (2 chữ số) 
14.2 Quy tắc 
Để biểu diễn một số của một hệ đếm, ta dùng chỉ số đặt ở góc dưới phải số đó. 
011012 : biểu thị số nhị phân. 
0828 : biểu thị số bát phân. 
2316 : biểu thị số thập lục phân. 
Đối với hệ thập phân ta có thể ghi chỉ số hoặc không ghi (nhầm hiểu), vì số thập phân là số 
mà ta sử dụng quen thuộc hằng ngày. Do đó, ta sử dụng công thức sau để chuyển đổi từ các hệ 
đếm sang hệ thập phân (cơ số 10) : 
X = anan-1 ... a1a0 = anbn + an-1bn-1 +... + a1b1 + a0b0 (*) 
trong đó, 
- b : là cơ số hệ đếm. 
- a0an : là các chữ số trong một hệ đếm. 
- X : là số thuộc một hệ đếm cơ số b. 
 Bảng các giá trị tương đương ở hệ thập phân, nhị phân, bát phân, thập lục phân. (**) 
Thập phân Nhị phân Bát phân Thập lục phân 
 0 0000 0 0 
 1 0001 1 1 
 2 0010 2 2 
 3 0011 3 3 
 4 0100 4 4 
 5 0101 5 5 
Hanoi Aptech Computer Education Center 
Giáo trình Lập trình C căn bản Trang 125 
 6 0110 6 6 
 7 0111 7 7 
 8 1000 10 8 
 9 1001 11 9 
 10 1010 12 A 
 11 1011 13 B 
 12 1100 14 C 
 13 1101 15 D 
 14 1110 16 E 
 15 1111 17 F 
14.3 Chuyển đổi giữa các hệ 
14.3.1 Chuyển đổi giữa hệ 2 và hệ 10 
 Chuyển đổi từ hệ 2 sang hệ 10 
 Ví dụ 3: X = 010112 , để chuyển sang hệ 10 ta dùng công thức (*) 
 X = 0*24 + 1*23 + 0*22 + 1*21 + 1*20 
 = 0 + 8 + 0 + 2 + 1 
 = 11 
 Ví dụ 4: X = 10110102, để chuyển sang hệ 10 ta dùng công thức (*) 
 X = 1*26 + 0*25 + 1*24 + 1*23 + 0*22 + 1*21 + 0*20 
 = 64 + 0 + 16 + 8 + 0 + 2 + 0 
 = 90 
 Chuyển đổi từ hệ 10 sang hệ 2 
 Ví dụ 5: X = 11 
 Ví dụ 6: X = 90 
11 2 
1 5 
 11 chia 2 = 5 dư 1 
 5 chia 2 = 2 dư 1 
 2 chia 2 = 1 dư 0 
1 chia 2 = 0 dư 1 
2
1 2 2 
0 1 2 
1 0 
10112 kết quả hệ nhị phân 10112
Hanoi Aptech Computer Education Center 
kết quả hệ nhị phân
90 2 
0 45 2
1 22 2 
0 11 2 
1 5 2
1 2 2
0 1 2
1 0
 90 chia 2 = 2 dư 0 
 45 chia 2 = 1 dư 1 
 22 chia 2 = 0 dư 0 
 11 chia 2 = 5 dư 1 
 5 chia 2 = 2 dư 1 
 2 chia 2 = 1 dư 0 
 1 chia 2 = 0 dư 1 
10110102 10110102 
Giáo trình Lập trình C căn bản Trang 126 
14.3.2 Chuyển đổi giữa hệ 8 và hệ 10 
 Chuyển đổi từ hệ 8 sang hệ 10 
 Ví dụ 7: X = 21068 , để chuyển sang hệ 10 ta dùng công thức (*) 
 X = 2*83 + 1*82 + 0*81 + 6*80 
 = 1024 + 64 + 0 + 6 
 = 1094 
 Ví dụ 8: X = 1308 , để chuyển sang hệ 10 ta dùng công thức (*) 
 X = 1*82 + 3*81 + 0*80 
 = 64 + 24 + 0 
 = 88 
 Chuyển đổi từ hệ 10 sang hệ 8 
 Ví dụ 9: X = 1094 
 Ví dụ 10: X = 88 
1094 8 
6 136 
 1094 chia 8 = 136 dư 6 
 136 chia 8 = 17 dư 0 
 17 chia 8 = 2 dư 1 
2 chia 8 = 0 dư 2 
8 
0 17 8 
1 2 8 
2 0 
21068 kết quả hệ bát phân 21068
Hanoi Aptech Computer Education Center 
14.3.3 Chuyển đổi giữa hệ 16 và hệ 10 
 Chuyển đổi từ hệ 16 sang hệ 10 
 Ví dụ 11: X = F4016 , để chuyển sang hệ 10 ta dùng công thức (*) 
 X = 15*162 + 4*161 + 0*160 
 = 3840 + 64 + 0 
 = 3904 
 Ví dụ 12: X = 1D16 , để chuyển sang hệ 10 ta dùng công thức (*) 
 X = 1*161 + 13*160 
1308 kết quả hệ bát phân 
 88 chia 8 = 11 dư 0 
 11 chia 8 = 1 dư 3 
 1 chia 8 = 0 dư 1 
88 8 
0 11 8
3 1 8 
1 0 
1308
Giáo trình Lập trình C căn bản Trang 127 
 = 16 + 13 
 = 29 
 Chuyển đổi từ hệ 10 sang hệ 16 
 Ví dụ 13
Hanoi Aptech Computer Education Center 
: X = 3904 
3904 16 
 3904 chia 16 = 244 dư 0 
 244 chia 16 = 15 dư 4 
 15 chia 16 = 0 dư 15 
0 244 16
4 15 16 
15 0 
 Ví dụ 14: X = 29 
14.3.4 Chuyển đổi giữa hệ 2 và hệ 16 
 Chuyển đổi từ hệ 2 sang hệ 16 
 Ví dụ 15: X = 010112 , để chuyển sang hệ 16 ta tra trong bảng (**) 
 → X = B16 
 Diễn giải : 0 10112 
0 B16 = B16 
 Ví dụ 16: X = 10110102, để chuyển sang hệ 16 ta tra trong bảng (**) 
 → X = 5A16 
 Diễn giải : 101 10102 
 5 A16 = 5A16 
 Chuyển đổi từ hệ 16 sang hệ 2 
 Ví dụ 17: X = B16 , để chuyển sang hệ 2 ta tra trong bảng (**) 
 → X = 10112 
 Diễn giải : B16 
10112 = 10112 
 Ví dụ 18: X = 5A16, để chuyển sang hệ 2 ta tra trong bảng (**) 
 → X = 10110102 
 Diễn giải : 5 A16 
0101 10102 = 10110102 
kết quả hệ thập lục phânF4016 F4016 
Số 15 tương ứng 
trong hệ 16 là F 
(xem bảng (**)) 
kết quả hệ thập lục phân
 29 chia 16 = 1 dư 13 
 1 chia 16 = 0 dư 1 
29 16 
13 1 16 
1 0 
Số 13 tương ứng 
trong hệ 16 là D 
(xem bảng (**)) 
1D16 1D16 
Giáo trình Lập trình C căn bản Trang 128 
Bài 15 : 
BIỂU THỨC VÀ PHÉP TOÁN 
15.1 Biểu thức 
Là sự phối hợp của những toán tử và toán hạng. 
Ví dụ 1: 
 a + b 
b = 1 + 5 * 2/i 
a = 6 % (7 + 1) 
x++ * 2/4 + 5 – power(i, 2) 
Toán hạng sử dụng trong biểu thức có thể là hằng số, biến, hàm. 
15.2 Phép toán 
 Trong C có 4 nhóm toán tử chính yếu sau đây: 
Hanoi Aptech Computer Education Center 
15.2.1 Phép toán số học 
+ : cộng áp dụng trên tất cả các toán hạng có kiểu dữ liệu char, int 
– : trừ float, double (kể cả long, short, unsigned) 
* : nhân 
/ : chia 
% : lấy phần dư áp dụng trên các toán hạng có kiểu dữ liệu char, int, long 
* Thứ tự ưu tiên: Đảo dấu +, – ( ) *, / , % +, – 
Ví dụ 2: 
 10%4 = 2 (10 chia 4 dư 2); 9%3 = 0 (9 chia 3 dư 0) 
 3 * 5 + 4 = 19 
 6 + 2 / 2 – 3 = 4 
 –7 + 2 * ((4 + 3) * 4 + 8) = 65 
) chỉ sử dụng cặp ngoặc () trong biểu thức, cặp ngoặc đơn được thực hiện theo thứ tự 
ưu tiên từ trong ra ngoài. 
15.2.2 Phép quan hệ 
> : lớn hơn 
>= : lớn hơn hoặc bằng 
< : nhỏ hơn 
<= : nhỏ hơn hoặc bằng 
== : bằng 
!= : khác 
* Thứ tự ưu tiên: > , >= , < , <= == , != 
) Kết quả của phép toán quan hệ là số nguyên kiểu int, bằng 1 nếu đúng, bằng 0 nếu sai. 
Phép toán quan hệ ngoài toán hạng được sử dụng là số còn được sử dụng với kiểu dữ liệu char. 
* Thứ tự ưu tiên giữa toán tử số học và toán tử quan hệ 
 Toán tử số học Toán tử quan hệ 
Ví dụ 3: 
 4 > 10 → có giá trị 0 (sai) 
Giáo trình Lập trình C căn bản Trang 129 
 4 >= 4 → có giá trị 1 (đúng) 
 3 == 5 → có giá trị 0 (sai) 
 2 <= 1 → có giá trị 0 (sai) 
 6 != 4 → có giá trị 1 (đúng) 
 6 – 3 < 4 → có giá trị 1 (đúng), tương đương (6 – 3) < 4 
 –2 * –4 < 3 + 2 → có giá trị 0 (sai), tương đương (–2 * –4) < (3 + 2) 
15.2.3 Phép toán luận lý 
! : NOT (phép phủ định) 
&& : AND (phép và) 
|| : OR (phép hoặc) 
Toán hạng a Toán hạng b !a a && b a || b 
Khác 0 
Khác 0 
Bằng 0 
Bằng 0 
Khác 0 
Bằng 0 
Khác 0 
Bằng 0 
0 (sai) 
0 (sai) 
1 (đúng) 
1 (đúng) 
1 (đúng) 
0 (sai) 
0 (sai) 
0 (sai) 
1 (đúng) 
1 (đúng) 
1 (đúng) 
0 (sai) 
* Thứ tự ưu tiên: ! && || 
Ví dụ 4: 
 !(2 <= 1) → có giá trị 1 (đúng) 
 5 && 10 → có giá trị 1 (đúng) 
 !6 → có giá trị 0 (sai) 
 1 && 0 → có giá trị 0 (sai) 
 1 || 0 → có giá trị 1 (đúng) 
* Thứ tự ưu tiên giữa các toán tử: 
 ! Toán tử số học Toán tử quan hệ && || 
15.2.4 Phép toán trên bit (bitwise) 
& : và (AND) 
| : hoặc (OR) 
^ : hoặc loại trừ (XOR) 
>> : dịch phải 
<< : dịch trái 
~ : đảo 
Bit a Bit b ~a a & b a | b a ^ b 
0 
0 
1 
1 
0 
1 
0 
1 
1 
1 
0 
0 
0 
0 
0 
1 
0 
1 
1 
1 
0 
1 
1 
0 
Ví dụ 5: 
 a = 13 → đổi ra hệ nhị phân → 1101 
 b = 10 → đổi ra hệ nhị phân → 1010 
1101 1101 1101 
 & 1010 | 1010 ^ 1010 
 = 1000 = 1111 = 0111 
 = 8 = 15 = 7 (dạng thập phân) 
Hanoi Aptech Computer Education Center 
Giáo trình Lập trình C căn bản Trang 130 
Hanoi Aptech Computer Education Center 
 a = 1235 → đổi ra hệ nhị phân → 0100 1101 0011 
 b = 465 → đổi ra hệ nhị phân → 0001 1101 0001 
 0100 1101 0011 0100 1101 0011 0100 1101 0011 
 & 0001 1101 0001 | 0001 1101 0001 ^ 0001 1101 0001 
 = 0000 1101 0001 = 0101 1101 0011 = 0101 0000 0010 
 = 209 = 1491 = 1282 (dạng thập phân) 
15.2.5 Các phép toán khác 
1. Phép toán gán 
 Phép gán là thay thế giá trị hiện tại của biến bằng một giá trị mới. 
 Các phép gán: =, +=, –=, *=, /=, %=, >=, &=, |=, ^=. 
 Ví dụ 6: ta có giá trị i = 3 
 i = i + 3 → i = 6 
 i += 3 → i = 6 ≡ i = i + 3 
 i *= 3 → i = 9 ≡ i = i * 3 
2. Phép toán tăng, giảm: ++, –– 
Toán tử ++ sẽ cộng thêm 1 vào toán hạng của nó, toán tử –– sẽ trừ đi 1. 
Ví dụ 7: ta có giá trị n = 6 
+ Sau phép tính ++n hoặc n++, ta có n = 7. 
+ Sau phép tính ––n hoặc n–– , ta có n = 5. 
 * Sự khác nhau giữa ++n và n++, ––n và n–– 
 + Sau phép tính x = ++n + 2, ta có x = 9. (n tăng 1 cộng với 2 rồi gán cho x) 
 + Sau phép tính x = n++ + 2, ta có x = 8. (n cộng với 2 gán cho x rồi mới tăng 1) 
15.2.6 Độ ưu tiên của các phép toán 
Độ ưu tiên Các phép toán Trình tự kết hợp 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
( ) [ ] -> 
! ~ & * – ++ – – (type) sizeof 
* / % 
+ – 
> 
 >= 
== != 
& 
^ 
| 
&& 
|| 
? : 
= += –= *= /= %= >= &= ^= |= 
, 
Trái sang phải 
Phải sang trái 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Trái sang phải 
Phải sang trái 
Phải sang trái 
Trái sang phải 
 Lưu ý: 
- Phép đảo (–) ở dòng 2, phép trừ (–)ở dòng 4 
- Phép lấy địa chỉ (&) ở dòng 2, phép AND bit (&) ở dòng 8 
- Phép lấy đối tượng con trỏ (*) ở dòng 2, phép nhân (*) ở dòng 3. 
15.3 Bài tập 
1. Giả sử a, b, c là biến kiểu int với a = 8, b = 3 và c = 5. Xác định giá trị các biểu thức sau: 
a + b + c a % c * 2 a * (a % b) 
Giáo trình Lập trình C căn bản Trang 131 
Hanoi Aptech Computer Education Center 
a / b – c 2 * b + 3 * (a – c) a * (b + (c – 4 * 3)) 
a + c / a c * (b / a) 5 * a – 6 / b 
a % b (a * b) % c 5 % b % c 
2. Giả sử x, y, z là biến kiểu float với x = 8.8, y = 3.5 và z = 5.2. Xác định giá trị các biểu thức sau: 
x + y + z z / (y + x) x / y – z * y 
5 * y + 6 * (x – z) (z / y) + x 2.5 * x / z – (y + 6) 
x / z 2 * y / 3 * z 5 * 6 / ((x + y ) / z) 
x % z 2 * y / (3 * z) x / y*(6 + ((z–y)+3.4)) 
3. Cho chương trình C với các khai báo và khởi tạo các biến như sau: 
 int i = 8, j = 5; 
 float x = 0.005, y = –0.01; 
 char c = 'c', d = 'd'; 
 Hãy xác định giá trị trả về của các biểu thức sau: 
(3 * i – 2 * j) % (4 * d – c) c < d 
2 * ((i / 4) + (6 * (j – 3)) % (i + j – 4)) x >= 0 
(i – 7 * j) % (c + 3 * d) / (x – y) x < y 
– (i + j) * –1 j != 6 
++i c == 99 
i++ d != 100 
i++ + 5 5 * (i + j + 1) > 'd' 
++i + 5 (3 * x + y) == 0 
j– – 2 * x + (y == 0) 
– –j !(i < j) 
j– – + i !(d == 100) 
– –j – –5 !(x < 0) 
++x (i > 0) && (j < 6) 
y-- (i > 0) !! (j < 5) 
i >= j (x > y) && (i > 0) || (j < 5) 
4. Cho chương trình có các khai báo biến và khởi tạo như sau: 
int i = 8, j = 5, k; 
float x = 0.005, y = –0.01, z; 
char a, b, c = 'c', d = 'd'; 
Xác định giá trị các biểu thức gán sau: 
k = (i + j * 4) z = i / j i %= j 
x = (x + y * 1.2) a = b = d i += (j – 3) 
i = j y –=x k = (j = = 5) ? i : j 
k = (x + y) x *= 2 k = (j > 5) ? i : j 
k = c i /= j i += j *= i /= 2 
i = j = 1.1 i += 2 a = (c < d) ? c : d 
z = k = x z = (x >= 0) ? x : 0 i –= (j > 0) ? j : 0 
k = z = x z = (y >= 0) ? y : 0 i = (i*9*(3+(8*j/3))) 
Giáo trình Lập trình C căn bản Trang 132 
Hanoi Aptech Computer Education Center 
Bài 16 : 
MỘT SỐ HÀM CHUẨN THƯỜNG DÙNG 
16.1 Các hàm chuyển đổi dữ liệu 
16.1.1 atof 
double atof(const char *s); ) Phải khai báo math.h hoặc stdlib.h 
Chuyển đổi 1 chuỗi sang giá trị double. 
Ví dụ: float f; 
 char *str = "12345.67"; 
 f = atof(str); 
 Kết quả f = 12345.67; 
16.1.2 atoi 
int atoi(const char *s); ) Phải khai báo stdlib.h 
Chuyển đổi 1 chuỗi sang giá trị int. 
Ví dụ: int i; 
 char *str = "12345.67"; 
 i = atoi(str); 
 Kết quả i = 12345 
16.1.3 itoa 
char *itoa(int value, char *string, int radix); ) Phải khai báo stdlib.h 
Chuyển đổi số nguyên value sang chuỗi string theo cơ số radix. 
Ví dụ: int number = 12345; 
 char string[25]; 
 itoa(number, string, 10); //chuyển đổi number sang chuỗi theo cơ số 10 
 Kết quả string = "12345"; 
 itoa(number, string, 2); //chuyển đổi number sang chuỗi theo cơ số 2 
 Kết quả string = "11000000111001"; 
16.1.4 tolower 
int tolower(int ch); ) Phải khai báo ctype.h 
Đổi chữ hoa sang chữ thường. 
Ví dụ: int len, i; 
char *string = "THIS IS A STRING"; 
len = strlen(string); 
for (i = 0; i < len; i++) 
 string[i] = tolower(string[i]); //đổi từ kí tự trong string thành chữ thường 
16.1.5 toupper 
int toupper(int ch); ) Phải khai báo ctype.h 
Đổi chữ thường sang chữ hoa. 
Ví dụ: int len, i; 
char *string = "this is a string"; 
len = strlen(string); 
for (i = 0; i < len; i++) 
 string[i] = toupper(string[i]); //đổi từ kí tự trong string thành chữ thường 
Giáo trình Lập trình C căn bản Trang 133 
Hanoi Aptech Computer Education Center 
16.2 Các hàm xử lý chuỗi ký tự 
16.2.1 strcat 
char *strcat(char *dest, const char *src); ) Phải khai báo string.h 
Thêm chuỗi src vào sau chuỗi dest. 
16.2.2 strcpy 
char *strcpy(char *dest, const char *src); ) Phải khai báo string.h 
Chép chuỗi src vào dest. 
Ví dụ: char destination[25]; 
 char *blank = " ", *c = "C++", *borland = "Borland"; 
strcpy(destination, borland); //chép chuỗi borland vào destination 
strcat(destination, blank); //thêm chuỗi blank vào sau chuỗi destination 
strcat(destination, c); //thêm chuỗi c vào sau chuỗi destination 
16.2.3 strcmp 
int *strcmp(const char *s1, const char *s2); ) Phải khai báo string.h 
So sánh chuỗi s1 với chuỗi s2. Kết quả trả về: 
• < 0 nếu s1 < s2 
• = 0 nếu s1 = s2 
• > 0 nếu s1 > s2 
Ví dụ: char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "aaa"; 
 strcmp(buf1, buf2); //kết quả trả về - 1 
 strcmp(buf1, buf3); //kết quả trả về 0 
 strcmp(buf2, buf3); //kết quả trả về 1 
16.2.4 strcmpi 
int *strcmp(const char *s1, const char *s2); ) Phải khai báo string.h 
So sánh chuỗi s1 với chuỗi s2 không phân biệt chữ hoa, chữ thường. Kết quả trả về: 
• < 0 nếu s1 < s2 
• = 0 nếu s1 = s2 
• > 0 nếu s1 > s2 
Ví dụ: char *buf1 = "aaa", *buf2 = "AAA"; 
 strcmp(buf1, buf2); //kết quả trả về 0 
16.2.5 strlwr 
char *strlwr(char *s); ) Phải khai báo string.h 
Chuyển chuỗi s sang chữ thường 
Ví dụ: char *s = "Borland C"; 
 s = strlwr(s); //kết quả s = "borland c" 
16.2.6 strupr 
char *strupr(char *s); ) Phải khai báo string.h 
Chuyển chuỗi s sang chữ hoa 
Ví dụ: char *s = "Borland C"; 
 s = strlwr(s); //kết quả s = "BORLAND C" 
Giáo trình Lập trình C căn bản Trang 134 
Hanoi Aptech Computer Education Center 
16.2.7 strlen 
int strlen(const char *s); ) Phải khai báo string.h 
Trả về độ dài chuỗi s. 
Ví dụ: char *s = "Borland C"; 
 int len_s; 
 len_s = strlen(s); //kết quả len_s = 9 
16.3 Các hàm toán học 
16.3.1 abs 
int abs(int x); ) Phải khai báo stblib.h 
Cho giá trị tuyệt đối của số nguyên x. 
Ví dụ: int num = - 123; 
 num = abs(num); //kết quả num = 123 
16.3.2 labs 
long int labs(long int x); ) Phải khai báo stblib.h 
Cho giá trị tuyệt đối của số nguyên dài x. 
Ví dụ: int num = - 12345678L; 
 num = labs(num); //kết quả num = 12345678 
16.3.3 rand 
int rand(void); ) Phải khai báo stblib.h 
Cho 1 giá trị ngẫu nhiên từ 0 đến 32767 
Ví dụ: int num; 
 randomize(); //dùng hàm này để khởi đầu bộ số ngẫu nhiên 
 num = rand(); //kết quả num = 1 con số trong khoảng 0..32767 
16.3.4 random 
int random(int num); ) Phải khai báo stblib.h 
Cho 1 giá trị ngẫu nhiên từ 0 đến 32767 
Ví dụ: int n; 
 randomize(); 
 n = random(100); //kết quả n = 1 con số trong khoảng 0..99 
16.3.5 pow 
double pow(double x, double y); ) Phải khai báo math.h 
Tính x mũ y 
Ví dụ: double x = 2.0, y = 3.0, z; 
 z = pow(x, y); //kết quả z = 8.0 
16.3.6 sqrt 
double sqrt(double x); ) Phải khai báo math.h 
Tính căn bậc 2 của x. 
Ví dụ: double x = 4.0, y; 
 y = sqrt(x); //kết quả y = 2.0 
Giáo trình Lập trình C căn bản Trang 135 
16.4 Các hàm xử lý file 
16.4.1 rewind 
void rewind(FILE *stream); ) Phải khai báo stdio.h 
Đưa con trỏ về đầu file. 
16.4.2 ftell 
long ftell(FILE *stream); ) Phải khai báo stdio.h 
Trả về vị trí con trỏ file hiện tại. 
16.4.3 fseek 
int fseek(FILE *stream, long offset, int whence); ) Phải khai báo stdio.h 
Di chuyển con trỏ file đến vị trí mong muốn 
• long offset: chỉ ra số byte kể từ vị trí trước đó đến vị trí bắt đầu đọc 
• int whence: chỉ ra điểm xuất phát để tính offset gồm các giá trị sau: SEEK_SET 
(đầu tập tin), SEEK_CUR (tại vị trí con trỏ hiện hành), SEEK_END (cuối tập tin). 
Hanoi Aptech Computer Education Center 

File đính kèm:

  • pdfgiao_trinh_lap_trinh_c_can_ban.pdf