Tải bản đầy đủ

Lap trinh can ban

Giáo Trình Lập Trình Cơ Bản

MỤC LỤC
Nội dung

Trang

LỜI NÓI ĐẦU

4

CHƢƠNG I: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C

5

1. LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN

5

2. CÁC TÍNH CHẤT ĐẶC TRƢNG CỦA NGÔN NGỮ


6

2.1. BỘ KÝ TỰ:

6

2.2. TỪ KHOÁ

6

2.3. TÊN

7

3. CÁC BƢỚC ĐỂ CHẠY MỘT CHƢƠNG TRÌNH C

7

4. CÁC KIỂU DỮ LIỆU

8

4.1. Kiểu số nguyên (int)

8

4.2. Kiểu ký tự (Char)

9

4.3. Kiểu dấu phẩy động

9

CHƢƠNG 2: KHAI BÁO HẰNG, BIẾN, BIỂU THỨC, TOÁN TỬ, VÀO , RA DỮ LIỆU
TRONG C
10
1. HẰNG, BIẾN

10


1.1. KHAI BÁO HẰNG

10

1.2. KHAI BÁO BIẾN

11

2. BIỂU THỨC VÀ CÁC PHÉP TOÁN TRONG C

12

2.1. BIỂU THỨC

12

2.2. CÁC PHÉP TOÁN

12

3. VÀO, RA DỮ LIỆU

16

3.1. HÀM PRINTF()

16

3.2 HÀM SCANF()

17

4. CÁC HÀM CHUẨN

18

4.1. HÀM GETS

18

4.2. HÀM GETCHAR

19

4.3. HÀM PUTCHAR

19

4.4.HÀM PUTS

19

CHƢƠNG III: LỆNH CÓ CẤU TRÚC

20

1. CÂU LỆNH

20

1.1. CÂU LỆNH ĐƠN:

20

1.2. CÂU LỆNH GHÉP:

20

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 1


Giáo Trình Lập Trình Cơ Bản
2. CẤU TRÚC ĐIỀU KHIỂN IF

20

2.1. IF DẠNG KHUYẾT

20

2.2. IF DẠNG ĐẦY ĐỦ

22

3. CẤU TRÚC SWITCH

24

CHƢƠNG IV: LỆNH CÓ CẤU TRÚC LẶP

26

1. CÂU LỆNH FOR

26

2. CÂU LỆNH BREAK VÀO CONTINUE

28

2.3. Lệnh break

28

2.2. Lệnh continue

29

3. CÂU LỆNH WHILE

29

4. CÂU LỆNH DO…WHILE

31

5. CÂU LỆNH GOTO

32

CHƢƠNG 5:

HÀM

33

1. TỔNG QUAN VỀ CHƢƠNG TRÌNH CON

33

1.1. HÀM THƢ VIỆN

33

1.2. HÀM NGƢỜI DÙNG

34

2. KHAI BÁO VÀ ĐỊNH NGHIÃ HÀM

34

3. THAO TÁC TRONG LỜI GỌI HÀM

35

4. NGUYÊN TẮC HOẠT ĐỘNG CỦA MỘT HÀM

37

5. CÁCH TRUYỀN THAM SỐ

38

6. CÂU LỆNH RETURN VÀ EXIT

39

6.1. LỆNH RETURN:

39

6.2. LỆNH EXIT

40

CHƢƠNG 6:

KIỂU MẢNG

40

1. ĐỊNH NGHĨA

40

2. KHAI BÁO MẢNG MỘT CHIỀU

40

3. CHỈ SỐ CỦA MẢNG MỘT CHIỀU

41

4. NHẬP XUẤT DỮ LIỆU CHO CÁC PHẦN TỬ CỦA MẢNG MỘT CHIỀU

41

5. LẤY ĐỊA CHỈ CỦA PHẦN TỬ MẢNG MỘT CHIỀU

41

6. TRUY NHẬP VÀO CÁC PHẦN TỬ CỦA MẢNG

42

6.1. Sắp xếp mảng theo thứ tự giảm dần

42

6.2. Sắp xếp mảng theo thứ tự tăng dần

45

7. MẢNG NHIỀU CHIỀU

46

7.1. Khai báo :

46

7.2. Truy xuất từng phần tử của mảng 2 chiều

46

CHƢƠNG 7:

KIỂU DỮ LIỆU XÂU KÝ TỰ

Tröôøng Cao Đẳng Ngheà BR-VT

48
Trang 2


Giáo Trình Lập Trình Cơ Bản
1. KHÁI NIỆM

48

Các hằng chuỗi ký tự đƣợc đặt trong cặp dấu nháy kép “”. 2. KHAI BÁO

48

2.1 Khai báo theo mảng

48

2.2 Khai báo theo con trỏ

48

2.3 Vừa khai báo vừa gán giá trị

49

3. VÀO RA VỚI XÂU KÝ TỰ

49

3.1. Nhập chuỗi từ bàn phím

49

3.2. Xuất chuỗi lên màn hình

49

4. CÁC HÀM TRONG XÂU KÝ TỰ
CHƢƠNG 8:

49

BIẾN CON TRỎ

53

1. BIẾN CON TRỎ

53

1.1. Khái niệm con trỏ ( pointer ) và địa chỉ :

53

1.2. Tính toán trên biến con trỏ ( pointer )

53

2. CON TRỎ VÀ MẢNG MỘT CHIỀU

54

3. CON TRỎ VÀ MẢNG NHIỀU CHIỀU

55

CHƢƠNG 9: KIỂU DỮ LIỆU CÓ CẤU TRÚC

56

1. KHÁI NIỆM VÀ NGHĨA CỦA KIỂU CẤU TRÚC

56

2. KHAI BÁO KIỂU CẤU TRÚC.

57

3. ĐẶT TÊN KIỂU DỮ LIỆU BẰNG TYPEDEF

57

4. TRUY NHẬP ĐẾN CÁC THÀNH PHẦN TRONG BIẾN CẤU TRÚC

58

5. NHẬP DỮ LIỆU CHO BIẾN CẤU TRÚC

61

CHƢƠNG 10:

KIỂU DỮ LIỆU TỆP TIN

62

1. KHÁI NIỆM VỀ TẬP TIN TRONG C

62

2. CÁC KIỂU VÀO RA VỚI TỆP:

62

2.1. Khai báo biến tập tin

63

2.2. Mở tập tin

63

2.3. Đóng tập tin

64

2.4. Kiểm tra đến cuối tập tin hay chƣa?

64

2.5. Di chuyển con trỏ tập tin về đầu tập tin - Hàm rewind()

64

3. CÁC THAO TÁC TRÊN TỆP:

64

3.1. Ghi dữ liệu lên tập tin văn bản

64

3.2. Đọc dữ liệu từ tập tin văn bản

65

TÀI LIỆU THAM KHẢO

Tröôøng Cao Đẳng Ngheà BR-VT

70

Trang 3


Giáo Trình Lập Trình Cơ Bản

LỜI NÓI ĐẦU
Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh đƣợc phát triển từ đầu thập niên 1970
bởi Ken Thompson và Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ dó, ngôn ngữ này đã
lan rộng ra nhiều hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất. C là ngôn
ngữ rất có hiệu quả và đƣợc ƣa chuộng nhất để viết các phần mềm hệ thống, mặc dù nó cũng
đƣợc dùng cho việc viết các ứng dụng. Ngoài ra, C cũng thƣờng đƣợc dùng làm phƣơng tiện
giảng dạy trong khoa học máy tính.
Giáo trình Ngôn ngữ lập trình dùng cho học sinh hệ Trung cấp nghề Lắp ráp máy tính
trong trƣờng Cao đẳng nghề Tỉnh BR – VT nhằm cung cấp cho sinh viên các thuật toán tổng
quát, từ đó sinh viên sẽ từng bƣớc cải tiến thuật toán để xây dựng đƣợc những chƣơng trình hiệu
quả và có tính ứng dụng cao. Ngoài ra,còn trang bị cho sinh viên những kiến thức làm tiền đề để
chuẩn bị cho một số môn học tiếp theo, nhƣ: cấu trúc dữ liệu, công nghệ phần mềm, …
Mục đích của giáo trình là trang bị cho học viên những kiến thức và kỹ năng:
+ Có đƣợc kỹ năng lập trình cấu trúc thông qua một số thuật toán quan trọng, gồm: các kỹ
năng về lập trình cấu trúc, con trỏ và mãng, duyệt và đệ quy, sắp xếp và tìm kiếm, ….
+ Phân tích đƣợc một bài toán và thiết kế thuật giải cho bài toán đó.
+ Sử dụng các kiểu dữ liệu, các cấu trúc điều khiển, các giải thuật, khai báo và sử dụng
hàm…
Nội dung chính của giáo trình gồm 8 chương:
Chƣơng 1: Giới thiệu ngôn ngữ lập trình C
Chƣơng 2: Khai báo hằng, biến, biểu thức, toán tử, vào , ra dữ liệu trong c
Chƣơng 3: Lệnh có cấu trúc
Chƣơng 4: Lệnh có cấu trúc lặp
Chƣơng 5: Hàm
Chƣơng 6: Kiểu Mảng
Chƣơng 7: Kiểu dữ liệu xâu ký tự
Chƣơng 8: Biến con trỏ
Chƣơng 9: Kiểu dữ liệu có cấu trúc
Chƣơng 10: Kiểu dữ liệu tệp tin
Trong quá trình biên soạn giáo trình tuy có nhiều cố găng nhƣng khó tránh khỏi các khiếm
khuyết. Rất mong đƣợc sự đóng góp ý kiến của ngƣời đọc để giáo trình đƣợc hoàn thiện hơn.
TÁC GIẢ

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 4


Giáo Trình Lập Trình Cơ Bản

CHƢƠNG I: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C
1. LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN
Ngôn ngữ C do Brian W.Kernighan và Dennis M.Ritchie phats triển vào đầu những năm
70 tại phòng thí nghiệm BELL( Hoa kỳ) với mục đích ban đầu là để phát triển hệ điều hành Unix.
Bôí cảnh ra đời xuất phát từ nhu cầu cần phải có một ngôn ngữ lẩptình hệ thống thay thế cho hợp
ngữ Assembly vốn nặng nề, độ tin cậy thấp và rất khó chuyển đổi giữa các hệ máy tính khác
nhau.
Phần lớn các ý tƣởng quan trọng nhất của c xuất phát từ một ngôn ngữ có trƣớc đó với tên
gọi BCPL, do Martin Richards nghiên cứa. Anh hƣởng của BCPL đối với c gián tiếp thông qua
ngôn ngữ B, do Ken Thompson viết năm 1970 do hệ Unix, chạy trên họ máy tính PDP-7.
Ngoài ra C đƣợc dùng để viết hệ điều hành Unix( Hiện nay trên 90% chƣơng trình nguồn
của hệ điều hành Unix đƣợc viết bằng C, chƣa đầy 10% bằng hợp ngữ) , ngƣời ta nhan h chóng
nhận ra sức mạnh của C trong việc xử lý các vấn đề hiện đại của tin học: xử lý con số , văn bản,
cơ sở dữ liệu, lập trình hƣớng đối tƣợng. Thực tế C đã tổ hợp đƣợc các thành tựu tiên tiến của tin
học và đã trở thành mọt chuẩn mặc nhiên.
Liên quan đến sự hình thành và phát triển của ngôn ngữ, có thể kể đến một số sự kiện đáng
quan tâm sau:
+ Năm 1978, cuốn giáo trình dạy bằng ngôn ngữ lập trình C” The C prrogramming langguage”
do chính hai tác giả Brian W.Kernighan và Dennis M.Ritchie biên soạn đã đƣợc xuất bản rộng
rãi.
+ Năm 1983 một tiểu ban của viện tiêu chuản quốc gia mỹ (ANSI) đƣợc thành lập nhằm đề xuất
ra một chuẩn cho ngôn ngữ C.
+ Năm 1988 chuẩn ANSI C chính thức đƣợc ban hành . Chuẩn này bao gồm các mô tả về ngôn
ngữ theo Brian W.Kernighan và Dennis M.Ritchievà qui định các thƣ viện chuẩn của ngôn ngữ
C, nhờ đó tăng tính khả chuyển của chƣơng trình viết bằng C.
+ trong thế giƣới máy vi tính có các hệ chƣơng trình dịch C nổi tiếng nhƣ:
Turbo C, Borland C của Borland Inc
MSC, Vc của Microsoft Corp
Lattice C của Lattice
+ Sự phát triển của ngôn ngữ lập trình trong những năm 80 đã đƣa đến phong cách lập trình
hƣớng đối tƣợng, Một trng những ngôn ngữ rất đƣợc ƣa dùng là C++, một bổ sung mới các yếu
tố hƣớng đối tƣợng vào ngôn ngữ C.
khởi động và thoát khỏi C
 Khởi động:
- Vào ổ cài đặt Turbo C \ TC\ Bin\ TC.EXE hoặc vào biểu tƣợng TC trên màn hình desktop
- Hoặc vào Run đánh đƣờng dẫn cài đặt C: c:\TC\TC\Bin\TC.exe
Chạy Turbo C cũng giống nhƣ chạy cc chƣơng trình khc trong mơi trƣờng DOS hay Windows,
mn hình sẽ xuất hiện menu của Turbo C có dạng nhƣ sau:

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 5


Giỏo Trỡnh Lp Trỡnh C Bn

Hỡnh 1

Dũng trờn cựng gi l thanh menu (menu bar). Mi mc trờn thanh menu li cú th cú nhiu mc
con nm trong mt menu kộo xung.
Dũng di cựng ghi chc nng ca mt s phớm c bit. Chng hn khi gừ phớm F1 thỡ ta cú
c mt h thng tr giỳp m ta cú th tham kho nhiu thụng tin b ớch.
Mun vo thanh menu ngang ta gừ phớm F10. Sau ú dựng cỏc phớm mi tờn qua trỏi hoc phi
di chuyn vựng sỏng ti mc cn chn ri gừ phớm Enter. Trong menu kộo xung ta li dựng
cỏc phớm mi tờn lờn xung di chuyn vựng sỏng ti mc cn chn ri gừ Enter.
Ta cng cú th chn mt mc trờn thanh menu bng cỏch gi phớm Alt v gừ vo mt ký t i
din ca mc ú (ký t cú mu sc khỏc vi cỏc ký t khỏc). Chng hn chn mc File ta gừ
Alt-F (F l ký t i din ca File)
Thoỏt khi C
Thoỏt khi Turbo C v tr v DOS (hay Windows)
Dựng File/Exit hoc Alt-X.
2. CC TNH CHT C TRNG CA NGễN NG
2.1. B Kí T:
- Gm 26 ch cỏi in hoa: A, B, C ...Z,
- Gm 26 ch cỏi in thng: a, b,, z
- 10 ch s: 0,1,2,..,9
- Ký t gch ni _ ( chỳ ý phõn bit du - ).
- Du cỏch ( space) : dựng phõn bit cỏc t :
Vớ d : lop Hc( 7 kớ t) - LopHoc( 6 kớ t).
Chỳ ý :
Khi vit chng trỡnh, ta khụng c s dng bt k ký t no khỏc ngoi cỏc ký t trờn.
2.2. T KHO
T khoỏ l nhng t c s dng khai bỏo cỏc kiu d liu, vit cỏc toỏn t v cỏc cõu
lnh. Bng di õy lit kờ cỏc t khoỏ ca TURBO C :

Trửụứng Cao ng Nghe BR-VT

Trang 6


Giỏo Trỡnh Lp Trỡnh C Bn
asm

break

case

cdecl

char

const

continue

default

do

double

else

enum

extern

far

float

for

goto

huge

if

int

interrupt

long

near

pascal

register

return

short

signed

sizeof

static

struct

switch

tipedef

union

unsigned

void

volatile

while

ý ngha v cỏch s dng ca mi t khoỏ s c cp sau ny, õy ta cn chỳ ý :
- Khụng c dựng cỏc t khoỏ t tờn cho cỏc hng, bin, mng, hm ...
- T khoỏ phi c vit bng ch thng, vớ d : vit t khoỏ khai bỏo kiu nguyờn l int
ch khụng phi l INT.
2.3. TấN
L 1 dóy kớ t bt u bng ch hoc ký t gch di, theo sau l ch cỏi, ch s hoc ký
t gch ni (-).
- Tờn : dựng lm tờn hnG, tờn bin , nhón , tờn hm....
Vớ d : Tờn ỳng : _abc, Delta_1, BETA.
Tờn sai : 1xyz ( vỡ bt u l 1 ch s )
A#B ( vỡ cú dõu #)
Del ta ( vỡ cú khong trng) , X-1 (vỡ s dng du gch ngang).
* Chỳ ý :
+ Tờn : ch hoa v ch thng c xem l khỏc nhau ( ( # pascal )
+ Thụng thng :
- ét ch hoa cho cỏc hng, ch thng cho cỏc i lng cũn li(bin, hm..).
- Nờn t 1 cỏch gi nh ( 8 kớ t u l cú ngha v tu thuc chng trỡnh ).
3. CC BC CHY MT CHNG TRèNH C
- chy mt chng trỡnh C ta thc hin theo cỏc bc sau ging nh cỏc chng trỡnh khỏc
bng ngụn ng lp trỡnh trong Dos:
+ Vào menu file ghi lại tên bài tập vừa làm
- Nu chng trỡnh cha c ghi ln no thỡ mt hi thoi s xut hin cho phộp bn xỏc nh
tờn tp tin (FileName). Tờn tp tin phi tuõn th quy cỏch t tờn ca DOS v khụng cn cú phn
m rng (s t ng cú phn m rng l .C hoc .CPP s núi thờm trong phn Option). Sau ú gừ
phớm Enter.
- Nu chng trỡnh ó c ghi mt ln ri thỡ nú s ghi nhng thay i b sung lờn tp tin
chng trỡnh c.
Chỳ ý: phũng mt in trong khi son tho chng trinh thnh thong bn nờn gừ phớm F2.

Trửụứng Cao ng Nghe BR-VT

Trang 7


Giáo Trình Lập Trình Cơ Bản
Quy tắc đặt tên tập tin của DOS: Tên của tập tin gồm 2 phần: Phần tên và phần mở rộng.




Phần tên của tập tin phải bắt đầu là 1 ký tự từ a..z (không phân biệt hoa thƣờng), theo sau
có thể là các ký tự từ a..z, các ký số từ 0..9 hay dấu gạch dƣới (_), phần này dài tối đa là 8
ký tự.
Phần mở rộng: phần này dài tối đa 3 ký tự.

Ví dụ: Ghi chƣơng trình vừa soạn thảo trên lên đĩa với tên là CHAO.C
Thực hiện chƣơng trình
+ ấn phím F9 để dịch và kiểm tra lỗi
+ Để thực hiện chƣơng trình hãy dùng Ctrl-F9 (giữ phím Ctrl và gõ phím F9).
Ví dụ: Thực hiện chƣơng trình vừa soạn thảo xong và quan sát trên màn hình để thấy kết quả của
việc thực thi chƣơng trình sau đó gõ phím bất kỳ để trở lại với Turbo
Ví dụ: Mở tập tin CHAO.C sau đó bổ sung để có chƣơng trình mới nhƣ sau:
#include
#include
int main ()
{
char ten[50];
printf(“Xin cho biet ten cua ban !”);
scanf(“%s”,ten);
printf(“Xin chao ban %s\n ”,ten);
printf(“Chao mung ban den voi Ngon ngu lap trinh C”);
getch();
return 0;
}
Ghi lại chƣơng trình này (F2) và cho thực hiện (Ctrl-F9).
- Chý ý: Mỗi câu lệnh có thể viết trên một hay nhiều dòng nhƣng phải kết thúc bằng dấu chấm
phẩy (;) .
4. CÁC KIỂU DỮ LIỆU
4.1. Kiểu số nguyên (int)
Trong C cho phép sử dụng các kiểu số nguyên sau:
Kiểu

Phạm vi biểu diễn

Kích thƣớc

Int
Unsigned int
Long (int)
Unsigned long (int)

-32768 đến 32767
0 đến 65535
-2147483648 đến -2147483647
0 đến 4294967295

2 byte
2 byte
4 byte
4 byte

Nhận xét: Các kiểu ký tự cũng có thể xem là một dạng của kiểu số nguyên

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 8


Giáo Trình Lập Trình Cơ Bản
4.2. Kiểu ký tự (Char)
Một giá trị kiểu ký tự (char) chiếm 1 byte trong bộ nhớ và biểu diễn một ký tự thông qua
bảng mã ASCII.
Ví dụ
Ký tự
Mã ASCII
0
048
1
049
2
050
A
065
a
097
Có hai kiểu ký tự (char) sau:
Phạm vi biểu diễn
Thứ nhất là: char (signed char)
Thứ hai là: unsigned char

Số ký tự

Kích thƣớc

-128 -> 127

256

1 byte

0 -> 255

256

1 byte

Ví dụ
char ch1;
unsigned char ch2;
ch1=200; ch2=200;
Khi đó thực chất:
Ch1=-56
Ch1 + 56=0
Ch2 + 56=256
Nhƣng ch1 và ch2 đều biểu diễn một ký tự có mã 200.
4.3. Kiểu dấu phẩy động
Trong C sử dụng ba loại giá trị dấu phẩy động: float (độ chính xác đơn), double và long
double (độ chính xác kép).
Kiểu

Phạm vi biểu diễn

Float
3.4E-38 -> 3.4E+38
Double
1.7E-308->1.7E+308
Long double 3.4E-4932-> 1.1E+4932

Số chữ số có nghĩa
7-8
15-16
17-184 byte

Kích thƣớc
4 byte
8 byte
10 byte

--------------------------------------------------

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 9


Giáo Trình Lập Trình Cơ Bản

CHƢƠNG 2: KHAI BÁO HẰNG, BIẾN, BIỂU THỨC, TOÁN
TỬ, VÀO , RA DỮ LIỆU TRONG C
1. HẰNG, BIẾN
1.1. KHAI BÁO HẰNG
- Khái niệm
Là một giá trị bất biến trong chƣơng trình không thay đổi, không biến đổi.
Các loại hằng đƣợc sử dụng trong C tƣơng ứng với các kiểu dữ liệu nhất định.
- Trong C, thƣờng có các loại hằng sau:
+ Hằng số
+ Hằng ký tự
+ Hằng chuỗi
Hằng số
Ðó là các giá trị số đã xác định, một hằng số có thể là nguyên hay thực và đƣợc viết trong
chƣơng trình một cách bình thƣờng.
 Hằng nguyên
- Giá trị chỉ bao gồm các chữ số, dấu +, - đƣợc lƣu trữ theo kiểu int. Ví dụ: 12,-12
- Nếu giá trị vƣợt quá miền giá trị của int hoặc có ký tự l (hay L ) theo sau giá trị thì lƣu
theo kiểu long int. Ví dụ: 43L hoặc 43l là hằng nguyên lƣu theo kiểu long int.
 Hằng thực:
Trong giá trị có dấu chấm thập phân, hoặc ghi dƣới dạng số có mũ, và đƣợc lƣu theo kiểu
float, double, long double. Ví dụ: 1.2 , 2.1E -3 (2.1E-3=0.0021) hoặc 3.1e-2 (3.1e-2=0.031).
 Hằng ký tự
- Một hằng kiểu ký tự đƣợc viết trong dấu ngoặc đơn (' ) nhƣ 'A' hoặc 'z'.
- Hằng ký tự 'A' thực sự đồng nghĩa với giá trị nguyên 65, là giá trị trong bảng mã ASCII
của chữ hoa 'A' (Nhƣ vậy giá trị của hằng chính là mã ASCII của nó). Ðối với một vài hằng ký tự
đặc biệt, ta cần sử dụng cách viết thêm dấu \ , nhƣ '\t' tƣơng ứng với phím tab:
Cách viết
„\n‟
„\t‟
„\0‟

Ký tự
Xuống hàng
Tab
“null”- ứng với giá trị nguyên 0 trong bảng mã ASCII
(khác với số „0‟)
„\b‟
Backspacse
„\r‟
CR (về đầu dòng)
„\f‟
LF (sang trang)
„\\‟
\
„\‟”

„\‟‟

Hằng ký tự có thể tham gia vào phép toán nhƣ mọi số nguyên khác:
'8' - '1'= 56-49=7.
 Hằng chuỗi
Là chuỗi ký tự nằm trong cặp dấu nháy kép " ". Các ký tự này cũng có thể là các ký tự
đƣợc biểu diễn bằng chuỗi thoát.
Ví dụ: "Turbo C", "Ngôn ngữ C++ \n\r"

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 10


Giáo Trình Lập Trình Cơ Bản
Một hằng chuỗi đƣợc lƣu trữ tận cùng bằng một ký tự Nul (\0), ví dụ chuỗi "Turbo C" đƣợc lƣu
trữ trong bộ nhớ nhƣ sau:
T
U
R
B
O
C
\0
Cách định nghĩa hằng sử dụng trong chƣơng trình
Với các giá trị hằng thƣờng đƣợc dùng trong một chƣơng trình ta nên định nghĩa ở đầu
chƣơng trình (sau các dòng khai báo những thƣ viện chuẩn) theo cú pháp:
#define
Ví dụ: #define PI 3.1415
1.2. KHAI BÁO BIẾN
 Cách khai báo
Mỗi biến trong chƣơng trình đều phải đƣợc khai báo trƣớc khi sử dụng. Cú pháp khai báo biến
nhƣ sau:
;
Lƣu ý: nếu có nhiều tên biến thì giữa các tên biến phải có dấu ,
Ví dụ:
int a,b;
float x;
 Khởi đầu cho các biến
Ngay trên dòng khai báo ta có thể gán cho biến một giá trị. Việc làm này gọi là khởi đầu cho
biến.
Ví dụ: int a,b=6,d=1;
 Truy xuất đến địa chỉ của biến
Một số hàm của C dùng đến địa chỉ của biến ví dụ nhƣ hàm scanf. Ðể nhận địa chỉ của biến
dùng toán tử: &
Ví dụ: &tên_biến.
/*Chương trình này minh họa cách khai báo biến trong C*/
#include
void main()
{
char ki_tu; /* Khai báo một kí tự*/
int so_nguyen; /* Khai báo một số nguyên*/
float so_thuc; /* Khai báo một số thực*/
ki_tu = 'a';
so_nguyen = 15;
so_thuc = 27.62;
printf("%c la mot ki tu.\n",ki_tu);
printf("%d la mot so nguyen.\n",so_nguyen);
printf("%f la mot so thuc.\n",so_thuc);
}
Kết quả
a la mot ki tu.
15 la mot so nguyen
27.620001 la mot so thuc

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 11


Giáo Trình Lập Trình Cơ Bản
2. BIỂU THỨC VÀ CÁC PHÉP TOÁN TRONG C
2.1. BIỂU THỨC
Là sự kết hợp hợp lệ của những phép toán thực hiện trên các biến, hằng hoặc các giá trị
của hàm. Một biểu thức bao gồm các toán tử (phép toán) và các toán hạng (biến, hằng...).
 Ví dụ 1:
int x=2,y=7;
x=(x+2*y); /* x,y là các biến tƣơng ứng với các toán hạng ; phép cộng (+) và (*) và dấu
(=) là các toán tử của biểu thức*/
Ví dụ 2:
int i, a=3;
a=(i=a*11); /*là một biểu thức hợp lệ. (với a là một biến đã có giá trị trƣớc đó).*/
2.2. CÁC PHÉP TOÁN
2.2.1. Các phép toán số học :
Các phép toán hai ngôi số học là
Phép toán

ý nghiã

Ví dụ

+

Phép cộng

a+b

-

Phép trừ

a-b

*

Phép nhân

a*b

/

Phép chia

a/b
( Chia số nguyên sẽ chặt phần thập phân )

%

Phép lấy phần dƣ

a%b
( Cho phần dƣ của phép chia a cho b )

Có phép toán một ngôi - ví du -(a+b) sẽ đảo giá trị của phép cộng (a+b).
Ví dụ :
11/3=3
11%3=2
-(2+6)=-8
Các phép toán + và - có cùng thứ tự ƣu tiên, có thứ tự ƣu tiên nhỏ hơn các phép * , / , % và
cả ba phép này lại có thứ tự ƣu tiên nhỏ hơn phép trừ một ngôi.
Các phép toán số học đƣợc thực hiện từ trái sang phải. Số ƣu tiên và khả năng kết hợp của
phép toán đƣợc chỉ ra trong một mục sau này
2.2.2. Cỏc phộp toỏn quan hệ và logic :
Phép toán quan hệ và logic cho ta giá trị đúng ( 1 ) hoặc giá trị sai ( 0 ). Nói cách khác, khi các
điều kiện nêu ra là đúng thì ta nhận đƣợc giá trị 1, trái lại ta nhận giá trị 0.

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 12


Giáo Trình Lập Trình Cơ Bản
 Các phép toán quan hệ là :
Phép toán

ý nghiã

Ví dụ

>

So sánh lớn hơn

a>b
4>5 có giá trị 0

So sánh lớn hơn hoặc bằng

>=

a>=b
6>=2 có giá trị 1

So sánh nhỏ hơn

<

a6<=7 có giá trị 1

So sánh nhỏ hơn hoặc bằng

<=

a<=b
8<=5 có giá trị 0

So sánh bằng nhau

==

a==b
6==6 có giá trị 1

!=

So sánh khác nhau

a!=b
9!=9 có giá trị 0

Bốn phép toán đầu có cùng số ƣu tiên, hai phép sau có cùng số thứ tự ƣu tiên nhƣng thấp
hơn số thứ tự của bốn phép đầu.
Các phép toán quan hệ có số thứ tự ƣu tiên thấp hơn so với các phép toán số học, cho nên
biểu thức :
iđƣợc hiểu là i<(n-1).
 Các phép toán logic :
Trong C sử dụng ba phép toán logic :
Phép phủ định một ngôi !
a

!a

khác 0

0

bằng 0

1

b

a&&b

Phép và (AND) &&
Phép hoặc ( OR ) ||
a

Tröôøng Cao Đẳng Ngheà BR-VT

a||b

Trang 13


Giáo Trình Lập Trình Cơ Bản
khác 0

khác 0

1

1

khác 0

bằng 0

0

1

bằng 0

khác 0

0

1

bằng 0

bằng 0

0

0

Các phép quan hệ có số ƣu tiên nhỏ hơn so với ! nhƣng lớn hơn so với && và ||, vì vậy
biểu thức nhƣ :
(ad)
có thể viết lại thành :
ad
Chú ý :Cả a và b có thể là nguyên hoặc thực.
2.2.3. Phép toán tăng giảm :
C đƣa ra hai phép toán một ngôi để tăng và giảm các biến ( nguyên và thực ). Toán tử tăng là ++
sẽ cộng 1 vào toán hạng của nó, toán tử giảm -- thì sẽ trừ toán hạng đi 1.
Ví dụ :
n=5
++n

Cho ta n=6

--n

Cho ta n=4

Ta có thể viết phép toán ++ và -- trƣớc hoặc sau toán hạng nhƣ sau : ++n, n++, --n, n--.
Sự khác nhau của ++n và n++ ở chỗ : trong phép n++ thì tăng sau khi giá trị của nó đã đƣợc sử
dụng, còn trong phép ++n thì n đƣợc tăng trƣớc khi sử dụng. Sự khác nhau giữa n-- và --n cũng
nhƣ vậy.
Ví dụ :
n=5
x=++n

Cho ta x=6 và n=6

x=n++

Cho ta x=5 và n=6

2.2.4. PHÉP TOÁN LẤY ĐỊA CHỈ BIẾN
 Khái niệm
Ðịa chỉ của biến là số thứ tự của byte đầu tiên trong một dãy các byte liên tiếp mà máy dành
cho biến.
 Phân loại địa chỉ biến

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 14


Giáo Trình Lập Trình Cơ Bản
Từ khái niệm về địa chỉ, ta nhận xét thấy : Ðịa chỉ của hai biến kiểu int liên tiếp cách nhau 2
byte, địa chỉ của hai biến kiểu float liên tiếp cách nhau 4 byte. Nên có thể phân biệt đƣợc các kiểu
địa chỉ: Ðịa chỉ kiểu int, địa chỉ kiểu float, địa chỉ kiểu double..
 Phép lấy địa chỉ của một biến
Phép toán
&x
cho ta địa chỉ của biến x.
2.2.5. CHUYỂN ĐỔI KIỂU DỮ LIỆU
Khi hai toán hạng trong một phép toán khác kiểu dữ liệu thì kiểu dữ liệu thấp đƣợc nâng
thành kiểu dữ liệu cao trƣớc khi tính toán. Ví dụ: nếu f có kiểu float, i có kiểu int, thì trong biểu
thức f +i , i sẽ tạm thời đƣợc chuyển sang kiểu float để thực hiện phép cộng.
Nếu f có kiểu float, i1 và i2 có kiểu int và có giá trị 10 và 3 thì biểu thức f=i1/i2 sẽ gán vào
f giá trị 3.0. Trong trƣờng hợp này, để thu đƣợc kết quả chính xác, cần sử dụng phép ép kiểu :
f=(float) i1/i2
Ví dụ:
int a,b=4;c=5;
float x,y=6.8,z=3.8;
a=y;
/*a =6*/
a=-y;
/*a =-6*/
x=a/b+c;
/*x=4.0*/
x=a/b+(float) c; /*x=4.0*/
x=(float) a/b+ c; /*x=3.5*/
a=y-z ;
/*a=2 (nếu kết quả là 2.999.) hoặc 3*/
2.2.6. THỨ TỰ ƢU TIÊN CÁC PHÉP TOÁN :
Các phép toán có độ ƣu tiên khác nhau, điều này có ý nghĩa trong cùng một biểu thức sẽ có
một số phép toán này đƣợc thực hiện trƣớc một số phép toán khác.
Thứ tự ƣu tiên của các phép toán đƣợc trình bày trong bảng sau :

TT

Phép toán

Trình tự kết hợp

1

() [] ->

Trái qua phải

2

! ~ & * - ++ -- (type ) sizeof

Phải qua trái

3

* ( phép nhân ) / %

Trái qua phải

4

+-

Trái qua phải

5

<< >>

Trái qua phải

6

< <= > >=

Trái qua phải

7

== !=

Trái qua phải

8

&

Trái qua phải

9

^

Trái qua phải

10

|

Trái qua phải

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 15


Giáo Trình Lập Trình Cơ Bản
11

&&

Trái qua phải

12

||

Trái qua phải

13

?:

Phải qua trái

14

= += -= *= /= %= <<= >>= &= ^= |=

Phải qua trái

15

,

Trái qua phải

Chú thích :
Các phép toán tên một dòng có cùng thứ tự ƣu tiên, các phép toán ở hàng trên có số ƣu tiên
cao hơn các số ở hàng dƣới.
Đối với các phép toán cùng mức ƣu tiên thì trình tự tính toán có thể từ trái qua phải hay
ngƣợc lại đƣợc chỉ ra trong cột trình tự kết hợp.
Ví dụ :
*--px=*(--px) ( Phải qua trái )
8/4*6=(8/4)*6 ( Trái qua phải )
Nên dùng các dấu ngoặc tròn để viết biểu thức một cách chính xác.
3. VÀO, RA DỮ LIỆU
3.1. HÀM PRINTF()
Cú pháp: printf("Dòng điều khiển",[các biểu thức]);
Dòng điều khiển gồm 3 loại:
+ Chuỗi ký tự mang tính chất thông báo (hằng chuỗi)
+ Các ký tự điều khiển( \n, \r, \t..)
+ Các mã đặc tả để in các biểu thức tƣơng ứng (mỗi biểu thức khi in phải có một đặc tả).
Các đặc tả đƣợc dùng trong hàm printf nhƣ sau:
Mã đặc tả
%c
%[n]d
%[n]ld
%[n]u
%[n]o
%[n]x
%[n.m]f
%s

Kiểu dữ liệu
char
int
long int
int
int
int
float
mảng ký tự

Tác dụng
in một ký tự có mã ASCII tƣơng ứng
in một số nguyên với chiều dài tối thiểu là n
in một số nguyên (long int)
in một số nguyên ở hệ 10 không dấu
in một số nguyên ở hệ bát phân tƣơng ứng.
in một số nguyên ở hệ 16 tƣơng ứng
in một số thực vối chiều dài n và lấy m số thập phân
in ra một chuỗi ký tự.

VÍ DỤ:
/* Chƣơng trình này minh họa các kiểu dữ liệu trong C*/
#include

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 16


Giáo Trình Lập Trình Cơ Bản
void main()
{
printf("gia tri 92 dung truong kieu d = %d. \n", 92);
/* gia tri 92 dung truong kieu d = 92.*/
printf("gia tri 92 dung truong kieu i = %i. \n", 92);#9;
/* gia tri 92 dung truong kieu i = 92.*/
printf("gia tri 92 dung truong kieu u = %u. \n", 92);
/* gia tri 92 dung truong kieu u = 92.*/
printf("gia tri 92 dung truong kieu o = %o. \n", 92);
/*gia tri 92 dung truong kieu o = 134.*/
printf("gia tri 92 dung truong kieu x = %x. \n", 92);#9;
/* gia tri 92 dung truong kieu x = 5c.*/
printf("gia tri 92 dung truong kieu X = %X. \n", 92);
/* gia tri 92 dung truong kieu X = 5C.*/
printf("gia tri 92.0 dung truong kieu f = %f. \n", 92.0);
/* gia tri 92.0 dung truong kieu f = 92.000000.*/
printf("gia tri 92.0 dung truong kieu e = %e. \n", 92.0);
/* gia tri 92.0 dung truong kieu e = 9.200000e+01.*/
printf("gia tri 92.0 dung truong kieu E = %E. \n", 92.0);
/* gia tri 92.0 dung truong kieu E = 9.200000E+01*/
printf("gia tri 92.0 dung truong kieu g = %g. \n", 92.0);
/* gia tri 92.0 dung truong kieu g = 92.*/
printf("gia tri 92.0 dung truong kieu G = %G. \n", 92.0);
/* gia tri 92.0 dung truong kieu G = 92.*/
printf("gia tri 92 dung truong kieu c = %c. \n", 92);
/* gia tri 92 dung truong kieu c = \.*/
printf("ky tu '9' dung truong kieu c = %c. \n", '9');
/* ky tu 9 dung truong kieu c = 9.*/
printf("chuoi 92 dung truong kieu s = %s. \n"," 92");
/* chuoi 92 dung truong kieu s = 92.*/
}
3.2 HÀM SCANF()
- Cú pháp: scanf("các đặc tả",tả>);
Các đặc tả có dạng %(Mỗi biến muốn nhập giá trị phải có một đặc tả tƣơng ứng).
Ta có các ký tự đặc tả sau:
Mã đặc tả Kiểu dữ liệu Tác dụng
của biến
%c
Char
nhập một ký tự
%d
Int
nhập một số nguyên
%ld
long int
nhập một số nguyên (long int)
%o
int
nhập một số nguyên ở hệ bát phân.
%x
int
nhập một số nguyên ở hệ 16 tƣơng ứng
%f
float
nhập một số thực
%lf
double
nhập một số thực
%s
mảng ký tự
nhập ra một chuỗi ký tự. Mảng tƣơng ứng phải đủ

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 17


Giáo Trình Lập Trình Cơ Bản
lớn để chứa chuỗi nhập vào và ký tự kết thúc chuỗi
(\0), lệnh scanf tự động chèn ký hiệu kết thúc chuỗi
vào.
ví dụ 1:
/* Chƣơng trình minh họa nhập dữ liệu (nhập một số thực) */
#include
void main()
{
float value; /* Một số đƣợc nhập bởi ngƣời sử dụng chƣơng trình. */
printf(" Nhập một số => ");
scanf("%f", &value);/* Nhập một số =>23*/
printf("Kết quả là => %f", value); /* Kết quả là =>23.000000*/
}
ví dụ 2:
/* Chƣơng trình minh họa nhập dữ liệu (nhập một chuỗi (xâu) ký tự) bằng hàm scanf() */
# include
char a[5];/*Khai báo một chuỗi gồm 5 ký tự*/
void main () /* Ham chinh */
{
int i;
printf("Nhap chuoi 5 ky tu: ");
scanf("%s",a);
/* giả sử nhập vào là ABCDEFGH (chú ý không nhập đƣợc khoảng trắng bằng lệnh
này)*/
/*Khi nhập chuỗi ta không cần phải lấy địa chỉ*/
printf("%s",a); /* In ra ABCDEFGH*/
}
Ghi chú: Ðể nhập đƣợc dòng ký tự có khoảng trắng bằng hàm scanf phải viết
scanf("%[^\n]",a)) /*a là chuỗi (xâu ) ký tự đƣợc nhập*/
2.3.3 HÀM CLRSCR() VÀ HÀM GETCH()
- Hàm CLRSCR():
+ Cú pháp: clrscr();
+ Ý nghĩa: có tác dụng xoá màm hình giống nhƣ trong pascal
- Hàm getch():
+ Cú pháp: getch();
+ Ý nghĩa: có thể sử dụng theo nhiều cách khác nhau, nếu viết getch(); là dùng để dừng màn hình
4. CÁC HÀM CHUẨN
4.1. HÀM GETS
- Cú pháp:gets(Tên của mảng ký tự);
- ý nghĩa: Hàm này cho phép nhận một chuỗi từ bàn phím cho đến khi gặp ký tự \n

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 18


Giáo Trình Lập Trình Cơ Bản
(cho phép nhập khoảng trắng giữa các từ)
- Ví dụ
/* Chƣơng trình minh họa nhập dữ liệu (nhập một chuỗi (xâu) ký tự) bằng hàm gets() */
# include
char a[5];/*Khai báo một chuỗi (xâu) gồm 5 ký tự*/
void main () /* Ham chinh */
{
int i;
printf("Nhap chuoi 5 ky tu: ");
gets(a);
/* giả sử nhập vào là ABCDEFGH , có thể nhập đƣợc khoảng trắng */
/*Khi nhập chuỗi ta không cần phải lấy địa chỉ*/
printf("%s",a); /* In ra ABCDEFGH*/
}
4.2. HÀM GETCHAR
- Cú pháp: getchar(void)
- ý nghĩa : Nhận một ký tự từ bàn phím và trả về ký tự nhận đƣợc
- Ví dụ
/* Chƣơng trinh minh họa hàm getchar() */
# include
void main () /* Ham chinh */
{
int j;
printf("Nhap 1 ky tu: ");
j=getchar();/*Nhận một ký tự từ bàn phím, rồi gán cho j. Giả sử j=A */
printf("%c\n",j);/*in ra màn hình ký tự A*/
printf("%d",j);/* in ra màn hình mã ASCII của A là 65 */
}
4.3. HÀM PUTCHAR
- Cú pháp: int putchar(int ch)
- ý nghĩa : Xuất một ký tự lên màn hình. Kết quả của hàm trả về ký tự xuất nếu thành công,
ngƣợc lại cho kết quả EOF (-1)
Ví dụ:
char c=A;
putchar(c);/*in ra màn hình ký tự A*/
4.4.HÀM PUTS
- Cú pháp: int puts(char *s)
- ý nghĩa : Xuất một chuỗi lên màn hình với *s là con trỏ kiểu char trỏ tới ô nhớ đầu của vùng
nhớ chứa chuỗi ký tự muốn xuất. Hàm này khi xuất sẽ đƣa thêm ký tự \n vào cuối, kết quả của
hàm =\n nếu thành công ngƣợc lại = EOF.
- Ví du:

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 19


Giáo Trình Lập Trình Cơ Bản
/*Chƣơng trình minh họa hàm puts*/
#include
void main()
{
/* Chức năng, công dụng của hàm puts */
puts("");
puts("Hàm puts có chức năng: Ðƣa một chuỗi ký tự ra màn hình ");
puts("Khi thành công, hàm trả về kí tự cuối cùng đƣợc xuất. ");
puts("Khi có lỗi hàm trả về EOF.");
}
Kết quả:
Hàm puts có chức năng: Ðưa một chuỗi ký tự ra màn hình
Khi thành công, hàm trả về kí tự cuối cùng được xuất.
Khi có lỗi hàm trả về EOF.
--------------------------------------------------

CHƢƠNG III: LỆNH CÓ CẤU TRÚC
1. CÂU LỆNH
1.1. CÂU LỆNH ĐƠN:
Một biểu thức lệnh(gán, tăng giá trị) kết thúc bởi dấu ”;” là một câu lệnh đơn. Một lời gọi
hàm đi sau bằng một dấu “ ;” cũng là một câu lệnh đơn.
Ví dụ: x=0; i++; printf(“\n”);
1.2. CÂU LỆNH GHÉP:
Câu lệnh ghép là tập hợp các câu lệnh đƣợc bao bởi hai dấu “{ và }”. về cú pháp , ở đâu có thể
đặt một câu lệnh đơn ở đoa có thể đặt khối lệnh. Phần thân của một hàm cũng là một câu lệnh
ghép
Cácthành phần bên trong của câu lệnh ghép sẽ đƣợc thực hiện một cách tuần tự xuất hiện. Đây
chính là cấu trúc tuần tự trong các ngôn ngữ lập trình cấp cao.
2. CẤU TRÚC ĐIỀU KHIỂN IF
2.1. IF DẠNG KHUYẾT
 Cú pháp:
if ()

 Sự hoạt động:
- Công việc> đƣợc thể hiện bằng 1 câu lệnh hay 1 khối lệnh.Thứ tự thực hiện của câu lệnh if nhƣ

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 20


Giáo Trình Lập Trình Cơ Bản
sau:
- Kiểm tra trƣớc.
+ Nếu điều kiện đúng (!= 0) thì thực hiện câu lệnh hoặc khối lệnh liền sau điều kiện.
+ Nếu điều kiện sai thì bỏ qua lệnh hoặc khối lệnh liền sau điều kiện (những lệnh và khối lệnh
sau đó vẫn đƣợc thực hiện bình thƣờng vì nó không phụ thuộc vào điều kiện sau if).
 Sơ đồ hoạt đông:
S
Biểu thức điều kiện
Đ

Công việc

Thoát

 Ví dụ 1: Yêu cầu ngƣời thực hiện chƣơng trình nhập vào một số thực a. In ra màn hình
kết quả nghịch đảo của a khi a ≠ 0.
#include
#include
int main ()
{
float a;
printf("Nhap a = "); scanf("%f",&a);
if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
getch();
return 0;
}
Giải thích:
- Nếu chúng ta nhập vào a≠ 0 thì câu lệnh printf("Nghich dao cua %f la %f",a,1/a)đƣợc thực hiện,
ngƣợc lại câu lệnh này không đƣợc thực hiện.
- Lệnh getch() luôn luôn đƣợc thực hiện vì nó không phải là “lệnh liền sau”điều kiện if.
 Ví dụ 2: Yêu cầu ngƣời chạy chƣơng trình nhập vào giá trị của 2 số a và b, nếu
a lớn hơn b thì in ra thông báo “Gia trị của a lớn hơn giá trị của b”, sau đó hiển thị giá
trị cụ thể của 2 số lên màn hình.
#include
#include
int main ()
{
int a,b;
printf("Nhap vao gia tri cua 2 so a, b!");
scanf("%d%d",&a,&b);

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 21


Giáo Trình Lập Trình Cơ Bản
if (a>b)
{
printf("\n Gia tri cua a lon hon gia tri cua b");
printf("\n a=%d, b=%d",a,b);
}

getch();
return 0;
}
Giải thích:
Nếu chúng ta nhập vào giá trị của a lớn hơn giá trị của b thì khối lệnh:
{
printf("\n Gia tri cua a lon hon gia tri cua b");
printf("\n a=%d, b=%d",a,b);
}
sẽ đƣợc thực hiện, ngƣợc lại khối lệnh này không đƣợc thực hiện.
 Ví dụ 3: Viết chƣơng trình tìm max của hai số a,b rồi in kết quả lên màm hình
#include
main()
{
float a,b,max;
printf("\n Cho a=");
scanf("%f",&a);
printf("\n Cho b=");
scanf("%f",&b);
max=a;
if (b>max) max=b;
printf(" \n Max cua hai so a=%8.2f va b=%8.2f la Max=%8.2f",a,b,max);
}

2.2. IF DẠNG ĐẦY ĐỦ
 Cú pháp:
if ()

else
`
 Sự hoạt động:
- Công việc 1, công việc 2 đƣợc thể hiện là 1 câu lệnh hay 1 khối lệnh Thứ tự thực hiện của câu
lệnh if nhƣ sau:
- Đầu tiên đƣợc kiểm tra trƣớc.
+ Nếu điều kiện đúng thì thực hiện công việc 1.

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 22


Giáo Trình Lập Trình Cơ Bản
+ Nếu điều kiện sai thì thực hiện công việc 2.
- Các lệnh phía sau công việc 2 không phụ thuộc vào điều kiện.
 Sơ đồ hoạt đông:

Biểu thức điều kiện

S

Đ
Công việc 1

Công việc 2

Thoát

 Ví dụ 1: Yêu cầu ngƣời thực hiện chƣơng trình nhập vào một số thực a. In ra
màn hình kết quả nghịch đảo của a khi a≠ 0, khi a =0 in ra thông báo “Khong the tim duoc nghich
dao cua a”
#include
#include
int main ()
{
float a;
printf("Nhap a = "); scanf("%f",&a);
if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
else
printf(“Khong the tim duoc nghich dao cua a”);
getch();
return 0;
}

Giải thích:
- Nếu chúng ta nhập vào a≠ 0 thì câu lệnh printf("Nghich dao cua %f la %f",a,1/a) đƣợc thực
hiện, ngƣợc lại câu lệnh printf(“Khong the tim duoc nghich dao cua a”) đƣợc thực hiện.
- Lệnh getch() luôn luôn đƣợc thực hiện.
 Ví dụ 2: Viết chƣơng trình tìm max của hai số a,b rồi in kết quả lên màm hình
#include
main()

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 23


Giáo Trình Lập Trình Cơ Bản
{
float a,b,max;
printf("\n Cho a=");
scanf("%f",&a);
printf("\n Cho b=");
scanf("%f",&b);
if (a>b) max=a;
else max=b;
printf(" \n Max cua hai so a=%8.2f va b=%8.2f la Max=%8.2f",a,b,max);
}
* Lưu ý:
- Ta có thể sử dụng các câu lệnh if…else lồng nhau. Trong trƣờng hợp if…else lồng nhau thì else
sẽ kết hợp với if gần nhất chưa có else.
- Trong trƣờng hợp câu lệnh if “bên trong” không có else thì phải viết nó trong cặp dấu {} (coi
nhƣ là khối lệnh) để tránh sự kết hợp else if sai.
3. CẤU TRÚC SWITCH
 Cú pháp:
switch ()
{
case giá trị 1:
Khối lệnh thực hiện công việc 1;
break;

case giá trị n:
Khối lệnh thực hiện công việc n;
break;
[ default:
Khối lệnh thực hiện công việc mặc định;
break;]
}
 Sự hoạt động:
- Tính giá trị của biểu thức trƣớc.
- Nếu giá trị của biểu thức bằng giá trị 1 thì thực hiện công việc 1 rồi thoát.
- Nếu giá trị của biểu thức khác giá trị 1 thì so sánh với giá trị 2, nếu bằng giá trị 2 thì thực hiện
công việc 2 rồi thoát.
- Cứ nhƣ thế, so sánh tới giá trị n.
- Nếu tất cả các phép so sánh trên đều sai thì thực hiện công việc mặc định của trƣờng hợp

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 24


Giáo Trình Lập Trình Cơ Bản
default.
 Lưu ý:
- Biểu thức trong switch() phải có kết quả là giá trị kiểu số nguyên (int, char, long, …).
- Các giá trị sau case cũng phải là kiểu số nguyên.
- Không bắt buộc phải có default.
 Ví dụ 1: Nhập vào một số nguyên, chia số nguyên này cho 2 lấy phần dƣ. Kiểm tra nếu phần
dƣ bằng 0 thì in ra thông báo “số chẵn”, nếu số dƣ bằng 1 thì in thông báo“số lẻ”.
#include
#include
int main ()
{ int songuyen, phandu;
clrscr();
printf("\n Nhap vao so nguyen ");
scanf("%d",&songuyen);
phandu=(songuyen % 2);
switch(phandu)
{
case 0: printf("%d la so chan ",songuyen);
break;
case 1: printf("%d la so le ",songuyen);
break;
}
getch();
return 0;
}
 Ví dụ 2:Yêu cầu ngƣời thực hiện chƣơng trình nhập vào một số nguyên dƣơng là tháng trong
năm và in ra số ngày của tháng đó.
- Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12
- Tháng có 30 ngày: 4, 6, 9, 10
- Tháng có 28 hoặc 29 ngày : 2
- Nếu nhập vào số <1 hoặc >12 thì in ra câu thông báo “không có tháng này “.
#include
#include
int main ()
{ int thang;
clrscr();
printf("\n Nhap vao thangs trong nam ");
scanf("%d",&thang);
switch(thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("\n Thang %d co 31 ngay ",thang);
break;
case 4:

Tröôøng Cao Đẳng Ngheà BR-VT

Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×