1. Trang chủ
  2. » Luận Văn - Báo Cáo

GIÁO TRÌNH NGÔN NGỮ C/C++

120 16 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 120
Dung lượng 1,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khối thân hàm được xác định bằng cặp ký hiệu: { /* bắt đấu phần thân */ } /* kết thúc phần thân */  Một câu lệnh được viết trên 1 hay nhiều dòng nhưng phải kết thức bởi dấu ; Ví dụ

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG

GIÁO TRÌNH

NGÔN NGỮ C/C++

Trang 2

2

CHƯƠNG 1: CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ C 8

1.1 MỘT SỐ CHƯƠNG TRÌNH ĐẦU TIÊN BẰNG C 8

1.2 CÁC TỪ KHÓA 10

1.3 TÊN VÀ CÁCH ĐẶT TÊN 10

1.4 CÁCH GHI LỜI GIẢI THÍCH 11

1.5 CÂU LỆNH VÀ DẤU CHẤM CÂU 11

1.6 CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH 11

1.7 MỘT SỐ QUI TẮC VIẾT CHƯƠNG TRÌNH 12

CHƯƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ 13

2.1 KHÁI NIỆM VỀ KIỂU DỮ LIỆU 13

2.2 KIỂU SỐ NGUYÊN 14

2.3 KIỂU SỐ THỰC 15

2.4 KIỂU KÍ TỰ 15

2.5 KIỂU XÂU KÍ TỰ 16

2.6 KIỂU BOOLEAN 16

2.7 BIẾN VÀ HẰNG 16

2.7.1 Biến 16

2.7.2 Khai báo biến 16

2.7.3 Hằng 17

Bài tập tại lớp 18

CHƯƠNG 3: CÁC PHÉP TOÁN & HÀM CƠ BẢN 19

3.1 CÁC PHÉP TOÁN 19

3.1.1 Các phép toán số học 19

Bài tập tại lớp: (Sinh viên làm bài và sửa tại lớp) 22

3.1.2 Các toán tử quan hệ và logic 24

3.1.3 Phép toán ? 27

3.1.1 Phép toán phẩy 27

3.1.2 Phép toán Xử lý Bit: 27

3.1.3 Thứ tự ưu tiên của các toán tử: 28

Trang 3

3

Bài tập tại lớp 29

3.2 MỘT SỐ HÀM CƠ BẢN: 31

3.2.1 Hàm đại số: 31

3.2.2 Hàm lượng giác: 31

3.2.3 Hàm xử lý ký tự <CTYPE.H> 32

Câu hỏi trắc nghiệm 32

CHƯƠNG 4: LỆNH NHẬP XUẤT DỮ LIỆU CƠ BẢN 34

4.1 XUẤT DỮ LIỆU RA MÀN HÌNH: 34

4.1.1 Lệnh printf 34

4.1.2 Lệnh puts : 35

4.2 XUẤT KẾT QUẢ RA MÁY IN: 35

4.3 NHẬP GIÁ TRỊ CHO BIẾN: 35

4.3.1 Toán tử gán và biểu thức gán 35

4.3.2 Hàm scanf() 36

4.3.3 Hàm getchar() 37

4.3.4 Hàm getch() 37

4.3.5 Hàm gets() 37

4.4 TRÌNH BÀY MÀN HÌNH: 37

4.4.1 Lệnh gotoxy(int x, int y): 37

4.4.2 Lệnh clrscr() 37

4.4.3 Lệnh textcolor(màu chữ) 37

4.4.4 Textbackground(màu nền) 38

4.4.5 Window(int x1,int y1,int x2,int y2) 38

4.5 TẠO SỐ NGẪU NHIÊN 38

Câu hỏi trắc nghiệm 38

Bài tập tại lớp 39

Bài tập về nhà 40

CHƯƠNG 5: CÁC CẤU TRÚC ĐIỀU KIỆN 45

5.1 CẤU TRÚC CHỌN 45

5.1.1 Cấu trúc chọn với if: 45

5.1.2 Cấu trúc chọn với if/else: 47

5.2 CẤU TRÚC CHỌN VỚI SWITCH 49

Trang 4

4

Bài tập tại lớp(Sinh viên làm bài và sửa tại lớp) 51

Câu hỏi trắc nghiệm 52

CHƯƠNG 6: CẤU TRÚC LẶP 56

6.1 VÒNG LẶP XÁC ĐỊNH FOR 56

Bài tập tại lớp 58

6.2 VÒNG LẶP KHÔNG XÁC ĐỊNH 59

6.2.1 Vòng lặp không xác định While 59

6.2.2 Vòng lặp không xác định với điều kiện sau: do while 61

Bài tập tại lớp 62

6.3 CÁC CÂU LỆNH RẼ NHÁNH VÔ ĐIỀU KIỆN 63

6.3.1 Lệnh break 63

6.3.2 Lệnh continue 63

6.3.3 Lệnh goto 64

Câu hỏi trắc nghiệm 65

Bài tập tại lớp 65

Bài tập về nhà: 66

CHƯƠNG 7: CHƯƠNG TRÌNH CON – HÀM 70

7.1 TẠI SAO PHẢI DÙNG CHƯƠNG TRÌNH CON? 70

7.2 PHÂN LOẠI HÀM 71

7.3 KHAI BÁO MẪU HÀM 72

7.4 ĐỊNH NGHĨA HÀM 72

7.5 GỌI HÀM 73

7.6 THAM SỐ HÌNH THỨC – THAM SỐ THỰC SỰ 73

7.7 BIẾN TOÀN CỤC – BIẾN CỤC BỘ 73

7.7.1 Biến toàn cục 73

7.7.2 Biến cục bộ (biến địa phương) 73

7.8 KHAI BÁO HÀM VÀ CÁC VÍ DỤ: 73

Bài tập tại lớp 75

7.9 TRUYỀN THAM SỐ CHO HÀM 75

7.9.1 Truyền tham trị 76

7.9.2 Truyền tham chiếu 76

7.10 ĐỆ QUI: 76

Trang 5

5

Câu hỏi trắc nghiệm 78

Bài tập về nhà 79

CHƯƠNG 8: CHƯƠNG 8: KIỂU MẢNG (ARRAY) 81

8.1 KHÁI NIỆM: 81

8.2 MẢNG MỘT CHIỀU: 82

8.2.1 Khai Báo Biến Mảng 1 Chiều: 82

8.2.2 Khai Báo Kiểu Mảng: 83

8.2.3 Một Số Thao Tác Trên Mảng 1 Chiều: 83

8.2.4 Truyền tham số Mảng một chiều: 85

8.3 MẢNG HAI CHIỀU: 86

8.3.1 KHÁI NIỆM: 86

8.3.2 KHAI BÁO VÀ SỬ DỤNG MẢNG HAI CHIỀU: 87

8.3.3 THAO TÁC TRÊN MẢNG 2 CHIỀU: 87

8.3.4 TRUYỀN THAM SỐ TRÊN MẢNG 2 CHIỀU: 89

8.4 MẢNG NHIỀU CHIỀU: 89

8.4.1 Khái niệm: 89

8.4.2 Khai báo mảng: 89

8.4.3 Truy xuất phần tử mảng: 89

8.4.4 Thao tác trên mảng n chiều: 89

Câu hỏi trắc nghiệm 89

Bài tập tại lớp 90

Bài tập về nhà 91

CHƯƠNG 9: CHUỖI KÝ TỰ 94

9.1 KHÁI NIỆM: 94

9.2 KHAI BÁO BIẾN CHUỖI: 94

9.3 KHAI BÁO KIỂU CHUỖI: 95

9.4 CÁC THAO TÁC TRÊN KIỂU CHUỖI: 95

9.4.1 Nhập chuỗi ký tự: 95

9.4.2 Xuất chuỗi: 96

9.4.3 Truy xuất đến từng ký tự trong chuỗi: biếnchuỗi[chỉsố] 96

9.5 MẢNG CÁC CHUỖI: 97

9.6 CON TRỎ VÀ CHUỖI KÝ TỰ: 98

Trang 6

6

9.6.1 Khai báo con trỏ 98

9.6.2 Gán địa chỉ vùng nhớ của biến chuỗi cho biến con trỏ 98

9.6.3 Gán hằng chuỗi cho biến con trỏ 98

9.7 CẤP PHÁT ĐỘNG 1 VÙNG NHỚ CHỨA DỮ LIỆU VÀ GHI ĐịA CHỈ VÀO BIẾN CON TRỎ: 98

9.8 HÀM TỰ TẠO VÀ KIỂU CHUỖI: 99

9.9 Các hàm xử lý chuỗi strong STRING.H: 99

9.9.1 Xác định chiều dài thật sự của chuỗi: 99

9.9.2 Đổi chữ thường thành chữ hoa và ngược lại: 100

9.9.3 Nối 2 chuỗi: 100

9.9.4 Nối n ký tự của chuỗi nguồn vào sau chuỗi đích: 101

9.9.5 Sao chép chuỗi: 102

9.9.6 Sao chép n ký tự từ chuỗi nguồn sang chuỗi đích: 103

9.9.7 So sánh 2 chuỗi theo thứ tự từ điển: 103

9.9.8 Tìm kiếm: 105

9.9.9 Các hàm chuyển đổi kiểu stdlib.h 105

Câu hỏi trắc nghiệm 106

Bài tập tại lớp 107

Bài tập về nhà 107

CHƯƠNG 10: KIỂU CẤU TRÚC (STRUCTURE) 109

10.1 KHÁI NIỆM: 109

10.2 ĐỊNH NGHIÃ KIỂU CẤU TRÚC MỚI: 109

10.3 KHAI BÁO BIẾN KIỂU CẤU TRÚC: 110

10.4 CÁC THAO TÁC TRÊN BIẾN MẪU TIN: 110

10.4.1 Gán 2 biến cấu trúc có cùng kiểu cấu trúc 110

10.4.2 Truy xuất giá trị từng mục dữ liệu trong 1 biến kiểu cấu trúc: 111

10.4.3 Địa chỉ của biến cấu trúc và mục dữ liệu: 111

10.5 CON TRỎ CỦA KIỂU CẤU TRÚC: 111

10.5.1 Khai báo con trỏ kiểu cấu trúc: 111

10.5.2 Gán địa chỉ vùng nhớ của 1 biến cấu trúc cho biến con trỏ: 111

10.5.3 Truy xuất giá trị 1 thành phần của biến cấu trúc bằng biến con trỏ: 111

10.6 HÀM VÀ KIỂU CẤU TRÚC: 112

Trang 7

7

10.6.1 Đối số của hàm có thể là: 112

10.6.2 Hàm có thể trả về: 112

10.7 MẢNG CẤU TRÚC: 113

Câu hỏi trắc nghiệm 117

Bài tập tại lớp 117

Bài tập về nhà 117

TÀI LIỆU THAM KHẢO 120

Trang 8

Bảng phân chia thời lượng:

1 Giới thiệu chương trình C 1/2

2 Cấu trúc chương trình C 1

3 Một số qui tắc viết chương trình 1/2

Trọng tâm bài giảng:

 Nắm vững cấu trúc của một chương trình C

1.1 MỘT SỐ CHƯƠNG TRÌNH ĐẦU TIÊN BẰNG C

Ví dụ 1: In ra màn hình 2 dòng chữ:

DAY LA CHUONG TRINH C

CHAO CAC BAN

printf(“DAY LA CHUONG TRINH C”);

printf(“\nCHAO CAC BAN”);

getch();

}

Giải thích:

/* */ : dòng ghi chú sẽ không được biên dịch

Mỗi chương trình nên bắt đầu bằng một ghi chú nói rõ mục đích của nó

chương trình:

- File stdio.h: chứa các hàm nhập xuất trên dòng nhập xuất gián tiếp (printf )

Trang 9

9

- File conio.h: chứa các hàm nhập xuất trực tiếp từ bàn phím, màn hình (getch)

Khi sử dụng một hàm chuẩn cần biết nó nằm trong tập tin header nào và phải dùng

lệnh #include để nạp tập tin đó vào chương trình

#include <[path]filename> : mặc định sẽ tìm trong thư mục chỉ định trong

OptionsDirectoriesINCLUDE Directories

#include “[path]filename” : mặc định tìm ở thư mục hiện hành, nếu không tìm thấy

sẽ tìm trong thư mục INCLUDE

Thông báo lỗi nếu không tìm thấy: Unable to open include file ‘[path]filename’

Dòng main() : là bắt buộc đối với tất cả các chương trình C Dấu () sau từ khóa

main cho biết main là 1 khối chương trình gọi là hàm (function)

Khối thân hàm được xác định bằng cặp ký hiệu:

{ /* bắt đấu phần thân */

} /* kết thúc phần thân */

Một câu lệnh được viết trên 1 hay nhiều dòng nhưng phải kết thức bởi dấu ;

Ví dụ 2: Chương trình tính chu vi và diện tích hình tròn theo giá trị bán kính r nhập

Chú ý : Một chương trình C có thể chứa 1 hay nhiều hàm, trong đó, bắt buộc phải có 1 hàm

main và phải nằm trên tất cả những hàm khác (nếu có) hàm này được tự động thực

hiện đầu tiên khi chạy chương trình

Trang 10

float cv, dt; /*Khai báo 2 biến cục bộ*/

printf(“\nChương trình tính diện tích và chu vi hình tròn\n”);

-Từ khóa không thể định nghĩa lại

-Không được đặt tên hằng, tên biến, tên hàm, tên chương trình trùng với từ khóa

-Một vài từ khóa thông dụng: conts, define, include, void, …

1.3 TÊN VÀ CÁCH ĐẶT TÊN ([3] trang 12)

-Tên chương trình, tên biến, tên hàm, tên hằng số,…đều phải được khai báo trước khi sử dụng

-Tên không được bắt đầu bằng số, không được chứa khoảng trắng và các kí tự đặc biệt như dấu chấm, dấu *,…

Trang 11

Ví dụ cách đặt tên sai:

3PI: bắt đầu bằng số

PI$: chứa kí hiệu $

Bien 1 : chứa khảong trắng

Char: trùng từ khóa

“pi”: dùng dấu “

-Lưu y: C là ngôn ngữ phân biệt chữ hoa, chữ thường, do đó biến Ketqua khác với ketqua cũng như KETQUA

-Nên đặt tên sao cho gợi nhớ

1.4 CÁCH GHI LỜI GIẢI THÍCH([3] trang 12-13)

-Lời giải thích dùng để thuyết minh, giúp chương trình sáng sủa, dễ hiểu

-Lời giải thích không tạo ra mã chương trình

-Nếu lời giải thích nằm trên một dòng, sử dụng hai dấu gạch chéo:

Ví dụ: // day la phan giai thich

-Nếu lời giải thích nằm trên nhiều dòng, sử dụng cặp kí hiệu /* và */

Chú ý: Nếu viết các chú thích trong chương trình mà không sử dụng các dấu // hoặc /* hay

*/, trình dịch sẽ coi chúng như là các lệnh C++ và sẽ hiển thị các lỗi

1.5 CÂU LỆNH VÀ DẤU CHẤM CÂU

-Mỗi câu lệnh trong chương trình được kết thúc bằng dấu chấm phẩy

-Dấu chấm phẩy được dùng để ngăn cách các câu lệnh

-Một số trường hợp không dùng dấu chấm phẩy:

+Sau void main()

+Sau #include<…>

1.6 CẤU TRÖC CHUNG CỦA CHƯƠNG TRÌNH

Các #include: dùng nạp header file chứa các hàm thư viện sử dụng trong chương

trình:

 Các #define: dùng tạo các macro thay thế

 Khai báo các đối tượng dữ liệu ngoài (biến, mảng, cấu trúc, hợp )

 Khai báo trước đặc trưng các hàm tự tạo (nếu có)

Hàm main

 Phần định nghiã các hàm tự tạo

Chú ý: Hàm main có thể đặt sau hoặc xen vào giữa các hàm khác, nhưng được tự động gọi

thực hiện đầu tiên trong chương trình

#include<…> //khai báo thư viện

Trang 12

#define

kiểu dữ liệu tên hàm (các tham số) //khai báo nguyên mẫu hàm

khai báo các biến toàn cục

//Các lệnh của hàm chính

getch(); //dừng chương trình xem kết quả

}

//Khai báo các hàm, có thể có hoặc không

kiểu dữ liệu tên hàm (các tham số)

{

//Các lệnh của hàm

return (); //trả lại giá trị cho hàm

}

1.7 MỘT SỐ QUI TẮC VIẾT CHƯƠNG TRÌNH

-Chương trình viết phải rõ ràng, thẩm mỹ

-Phải có các lời giải thích hợp lí mô tả về chương trình, cách sử dụng hoặc các biến quan trọng

-Cách bố trí câu lệnh hợp lí

+Mỗi câu lệnh chiếm 1 dòng

+Các lệnh cùng nhóm phải thẳng hàng

+Các câu lệnh viết theo phân cấp

-Chương trình nên đặt tên dễ hiểu, mang tính gợi nhớ

-Các biến đặt ngắn gọn, gọi nhớ chức năng

Trang 13

CHƯƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ Yêu cầu:

Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản sau:

 Các kiểu dữ liệu

 Cách đặt tên và khai báo biến

 Cách đặt tên và khai báo hàm

 Phạm vi sử dụng biến

 Cách sử dụng một số hàm cơ bản

Số tiết lên lớp: 2

Bảng phân chia thời lượng:

1 KiỂu dữ liệu sơ cấp 1

3 Bài tập thảo luận 1/2

Trọng tâm bài giảng:

 Nắm vững các kiểu dữ liệu cơ bản của C

 Cách khai báo biến và hằng

2.1 KHÁI NIỆM VỀ KIỂU DỮ LIỆU ([3] trang 20-22)

-Dữ liệu (DATA) là tất cả những gì được máy tính xử lí

-Kiểu dữ liệu (DATA TYPE) được định nghĩa với 2 điểm chính:

+Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận được

+Trên đó xác định một số phép toán

-Dữ liệu được chứa trong bộ nhớ máy tính với một số lượng ô nhớ nhất định tính theo đơn

vị byte

Trang 14

Bảng 2.1 : Các kiểu dữ liệu khai báo cho biến số nguyên

Kiểu biến Từ khóa số byte dải giá trị

long integer long 4 -2 tỉ đến 2 tỉ

unsigned character unsigned char 1 0 đến 255

unsigned integer unsigned int 2 0 đến 65535

unsigned long integer unsigned long 4 0 đến 4 tỉ

Chú ý : Khi thực hiện phép tính số học đối với số nguyên, cần hết sức thận trọng xem các phép toán có cho kết quả vượt ra khỏi phạm vi biểu diễn của máy không, ta gọi là hiện

tượng tràn số

Ví dụ : 32000+800-2000=29200

Máy tính sẽ xử lí sai vì lúc làm phép cộng 32000 với 800 đã cho ra kết quả trung gian là

32800, vượt quá giới hạn 32767 của máy

Ví dụ 4: Khai báo biến số nguyên và tính tổng 2 số

DATA

TYPE

Kiểu vô hướng

Kiểu có cấu trúc

Kiểu con trỏ

Kiểu cơ sở

Kiểu vô hướng do người dùng định nghĩa Kiểu liệt kê

Kiểu mảng (array) Kiểu cấu trúc (struct) Kiểu tập tin (file)

Các kiểu số nguyên Các kiểu số thực Kiểu kí tự Kiểu logic Boolean

Hình 2.1: Tổng quan phân loại các kiểu dữ liệu

Trang 15

//ví dụ về khai báo biến số nguyên và tính tổng của chúng

#include <stdio.h> //khai báo hàm thư viện

Bảng 2.2 : Các kiểu dữ liệu khai báo cho biến số thực

Kiểu biến Từ khóa số byte dải giá trị

số thực với độ chính xác đơn float 4 1.2E-38 đến 3.4E38

Kiểu kí tự được định nghĩa trong C bằng từ khóa char

Một hằng kí tự được biểu diễn bằng chữ viết đó nằm giữa hai dấu nháy đơn

„a‟, „A‟, „0‟,‟*‟,…

Mỗi hằng kí tự được lưu trữ đúng 1 byte ô nhớ

Trang 16

Bộ mã kí tự được dùng phổ biến là bộ mã ASCII (American Standard Code for Information Interchange)

Biến là đại lượng có thể thay đổi được giá trị

Biến được lưu trữ trong bộ nhớ và được đặt tên để dễ sử dụng

Biến là 1 vùng nhớ Ram dùng lưu trữ dữ liệu tạm thời trong quá trình thực hiện chương trình Việc truy xuất đến giá trị được lưu trữ trong vùng nhớ được thực hiện thông qua tên biến

2.7.2 Khai báo biến

Muốn sử dụng biến, bắt buộc phải khai báo trước

Kiểudữliệu tênbiến1[= giátrị] , tênbiến2[=giátrị];

Tên (identifier): là 1 chuỗi tối đa 32 ký tự gồm chữ cái, số, dấu gạch dưới Trong đó

ký tự đầu tiên không phải là số C phân biệt chữ hoa và chữ thường Có thể chỉ

định chiều dài tối đa của tên bằng chức năng:

OptionsCompilerSourceIdentifier length

Biến phải gắn liền với 1 kiểu dữ liệu cụ thể

Ví dụ 5: Khai báo một số biến thuộc các kiểu đã học

int a; //khai báo 1 biến a thuộc kiểu integer

float dtb; //khai báo 1 biến dtb thuộc kiểu số thực

char lop; //khai báo 1 biến lop thuộc kiểu kí tự

unsigned int tuoi; //khai báo 1 biến tuổi thuộc kiểu số nguyên không dấu

2.7.2.1 Vị trí khai báo

Vị trí khai báo biến sẽ qui định phạm vi hoạt động của biến

Trang 17

Khai báo bên trong khối lệnh: (Biến cục bộ)

- Phải được khai báo sau dấu {, đầu khối và trước tất cả các câu lệnh khác trong khối

- Phạm vi hoạt động: Các biến này chỉ được sử dụng bên trong khối lệnh đó

- Thời gian tồn tại: Khi thực hiện xong khối lệnh, thì vùng nhớ cấp phát cho các

biến này sẽ xóa (ngoại trừ trường hợp có sử dụng từ khóa static)

- Giá trị ban đầu: Nếu không gán giá trị khởi đầu thì giá trị của các biến cục bộ chưa

được xác định Trường hợp có sử dụng từ khóa Static: thì các biến này có giá trị khởi đầu mặc định là 0 và chỉ được gán giá trị khởi đầu khi thực hiện lần đầu tiên, các lần sau sẽ sử dụng giá trị hiện đang lưu trử

- Tên các biến trong cùng 1 khối lệnh không được trùng nhau nhưng có thể trùng tên với biến nằm ngoài khối lệnh

Khai báo bên ngoài các hàm:(gọi là Biến ngoài)

- Phạm vi sử dụng của biến ngoài là từ vị trí khai báo của nó cho đến cuối chương trình Nó có thể sử dụng cho các chương trình khác nhờ khai báo extern viết trên các file này

- Giá trị ban đầu: Khi chưa được khởi đầu thì giá trị của biến ngoài = 0

- Thời gian tồn tại: cho đến khi kết thúc chương trình

2.7.2.2 Lấy địa chỉ của biến

Mỗi biến được cấp phát trong bộ nhớ gồm một hay nhiều byte liên tiếp tùy thuộc vào kiểu

dữ liệu Địa chỉ của byte đầu tiên là địa chỉ của biến

Phép toán: &tênbiến trả về địa chỉ của biến

Hằng là những giá trị cố định thuộc phạm vi của một kiểu dữ liệu, không bị thay đổi khi thực hiện chương trình

Trang 18

Khai báo hằng

Muốn sử dụng hằng ta cũng phải khai báo trước với từ khóa const

Const Kiểu dữ liệu tên hằng=giá trị hằng

Ví dụ 7: Khai báo hằng

Const int tigia=16000;

const float pi=3.14;

Bài tập tại lớp

Câu 1 Chọn tương ứng cho cột A và B:

8 10.34 ABC abc

23 12112134.86868686886 _A1

$abc

„A‟

Tên định danh sai Hằng số nguyên Hằng ký tự Double

Số chấm động Tên định danh đúng

Hướng dẫn: Nhiều mục trên cột A có thể tương ứng tới một mục đơn tại cột B

Câu 2 Tính giá trị của các biến sau mỗi câu lệnh dưới đây:

Trang 19

CHƯƠNG 3: CÁC PHÉP TOÁN & HÀM CƠ BẢN

 Hiểu khái niệm ép kiểu

 Hiểu độ ưu tiên của các toán tử

Số tiết lên lớp: 2

Bảng phân chia thời lượng:

1 Các phép toán cơ bản ½

2 Chuyển đổi kiểu dữ liệu ½

3 Các hàm cơ bản và cách sử dụng ½

Trọng tâm bài giảng:

 Nắm vững các phép toán cơ bản, chuyển kiểu dữ liệu

Bảng 3.1: Bảng mô tả các phép toán 2 ngôi

Trang 20

 Phép chia trên 2 số nguyên cho kết quả là 1 số nguyên, cắt bỏ phần thập phân không làm tròn số Ví dụ: 19 / 5 = 3 cắt bỏ 0.8

Phép chia lấy phần dư chỉ được dùng trên 2 toán hạng kiểu số nguyên (nếu không

sẽ sinh lỗi cú pháp) Ví dụ: 19 % 5 = 4

 Thứ tự thực hiện các toán tử trong một biểu thức tương tự như trong Pascal

Ví dụ 8: Error! được viết (b*b - 4*a*c)/(2*d) hay (b*b - 4*a*c)/2/d

b) Hai toán tử 1 ngôi: Dùng tăng giảm các biến nguyên hay thực 1 đơn vị

Ví dụ 9: ++n; hay n++ <==> n = n+1;

Toán tử giảm ( ): biến; hay biến ;

Ví dụ 10: n; hay n ; <==> n = n -1;

Chú ý: Trường hợp sử dụng toán tử này trong một biểu thức thì việc đặt trước hay sau sẽ

ảnh hưởng đến kết quả bài toán:

Đặt trước: nếu muốn thay đổi giá trị cho n trước khi sử dụng n

Đặt sau: nếu muốn thay đổi giá trị cho n sau khi sử dụng n xong

printf(“%d “, x * y); printf(“%d”, x - y); printf(“%d “, x++ + ++y);

Cho kết quả: 120 -2 20

Ví dụ 15: Chương trình myProgram

1 Gọi trình soạn thảo để nhập những câu lệnh cho chương trình C

2 Tạo ra một tập tin mới

3 Nhập vào đoạn mã sau:

#include <stdio.h>

void main()

{

Trang 21

int principal, period;

float rate, si;

Ðể thấy kết quả ở đầu ra, thực hiện tiếp các bước sau:

4 Lưu tập tin với tên myprogramI.C

5 Biên dịch tập tin myprogramI.C

6 Thực thi chương trình myprogramI.C

7 Trở về trình soạn thảo

Mẫu kết xuất cho chương trình trên như hình sau:

Hình 3.1:Kết quả của myprogramI.C

printf(“\nEnter any three numbers: ”);

scanf(“%d %d %d”, &a, &b, &c);

sum = a + b + c;

printf(“\n Sum = %d”, sum);

}

Trang 22

3 Lưu tập tin với tên myprogramII.C

4 Biên dịch tập tin myprogramII.C

5 Thực thi chương trình myprogramII.C

6 Trở về trình soạn thảo

Mẫu kết quả ở đầu ra của chương trình trên như hình sau:

Hình 3.2:Kết quả của myprogramII.C Bài tập tại lớp:

Câu 3 Viết một chương trình nhập vào một số và tính bình phương của số đó

Hướng dẫn: Thực hiện theo các bước sau:

a Nhập vào một số

b Nhân số đó với chính nó và hiển thị kết quả đó

Câu 4 Viết chương trình tính diện tích và chu vi của một vòng tròn

Hướng dẫn: Thực hiện theo các bước sau:

Hướng dẫn: Thực hiện theo các bước sau:

e Nhập vào 1 số thực (lương) và một số nguyên (tuổi)

f Dùng hàm in ra màn hình

3.1.1 Phép chuyển đổi kiểu dữ liệu

Việc chuyển đổi kiểu dữ liệu thường được diễn ra tự động trong 2 trường hợp:

- Kiểu thấp hơn sẽ được nâng thành kiểu cao hơn trước khi thực hiện phép

toán

- Giá trị thu được có kiểu cao hơn

Ví dụ 3.10 : 1.5 * (5/2) -> 1.5 * 2 = 3.00

1.5 * 5/2 -> 7.5 / 2 = 3.75

Trang 23

1.5 * (5/2F) -> 1.5 * 2.5= 3.75

chuyển sang kiểu của vế trái và đó là kiểu kết quả

Phép chuyển kiểu cho ra giá trị thuộc kiểu type chỉ định Bản thân của expression thì

không thay đổi kiểu

Ví dụ 18: Đổi số thực sang số nguyên có làm tròn số

int a; float x;

a = (int)( x + 0.5);

x = (float)a / 2; /*nếu a=5 ==> x = 2.5*/

Trong biểu thức thứ ba:

Nếu chúng ta di chuyển dấu chấm thập phân sang số 13 (40 / 17 * 13.0 / 3), kết quả vẫn sẽ

Trong biểu thức cuối:

nếu chúng ta di chuyển dấu chấm thập phân sang số 17 (40 / 17.0 * 13 / 3), kết quả bây giờ

sẽ là 10.196078 bởi vì:

1 17.0 ép kiểu của phép chia đầu thành kiểu double và 40.0 / 17.0 = 2.352941

Trang 24

2 2.352941 * 13.0 = 30.588233

3 và 30.588233 / 3.0 = 10.196078

1 Tạo một tập tin mới

2 Gõ đoạn mã sau vào „Edit window‟:

3 Lưu tập tin với tên type.c

4 Biên dịch tập tin type.c

5 Thực thi chương trình type.c

3.1.2 Các toán tử quan hệ và logic: (Ralational & logical operators)

Các phép toán quan hệ và logic cho kết quả là 1 (Đúng) | 0 (Sai) Được dùng tạo các biểu thức điều kiện cho việc chọn lựa công việc cần thực hiện

Trang 25

bằng Khác != a != b Nhỏ hơn < a < b

Lớn hơn > a > b Nhỏ hơn hoặc

 Phép toán so sánh có độ ƣu tiên thấp hơn so với các phép toán số học

Ví dụ 20: Độ ƣu tiên toán tử

Ðầu tiên, a+b sẽ đƣợc tính (toán tử số học có độ ƣu tiên cao hơn toán tử so sánh), kết quả là

11 Kế đến giá trị 11 đƣợc so sánh với c Kết quả là 1(true) bởi vì 11 > 7

1 Tạo một tập tin mới

2 Gõ đoạn mã sau vào „Edit window‟:

Trang 26

printf("The value of a > b is \t%i\n\n", a > b);

printf("The value of b < c is \t%i\n\n", b < c);

printf("The value of a + b >= c is \t%i\n\n", a + b >= c); printf("The value of a - b <= b - c is \t%i\n\n", a-b <= b-c); printf("The value of b-a == b - c is \t%i\n\n", b - a == b - c); printf("The value of a*b != c * c is \t%i\n\n", a * b < c * c); printf(“Result of a>10 && b<5 = %d\n\n“, a>10 && b<5); printf(“Result of a > 100 || b < 50 = %d\n\n”, a>100 || b<50); }

3 Lưu tập tin với tên compare.c

4 Biên dịch tập tin compare.c

5 Thực thi chương trình compare.c

Trang 27

3.1.2 Phép toán ?

<điều kiện> ? <biểu thức 1> : <biểu thức 2> ;

Trả về giá trị của <biểu thức 1> nếu <điều kiện> đúng, ngƣợc lại trả về giá trị của <biểu thức 2>

(<biểu thức 1> , <biểu thức 2> , , <biểu thức n>)

Việc thực hiện đƣợc thực hiện từ trái sang phải Kết quả và kiểu dữ liệu của biểu thức phẩy

là của biểu thức ở bên phải <biểu thức n>

a ^ b Phép hoặc loại trừ (XOR)

~ a Lấy phần bù theo Bit

Trang 28

(-256) << 2 = -1024; (-256) >> 2 = -64

Ví dụ 27: Để trích Byte thấp và byte cao của một số nguyên:

b_thap = a & 0xff

b_cao = a >> 8

3.1.5 Thứ tự ƣu tiên của các toán tử

Bảng 3.3: Thứ tự ưu tiên của các phép toán

1 ( ) [ ] -> Trái sang phải

2 ! ++ - (type) sizeof Phải sang trái

5 << >>

6 < <= > >= Trái sang phải

8 &

10 |

11 && Trái sang phải

13 ? :

14 = += -= *= /= %= Phải sang trái

Trang 29

1 Tạo một tập tin mới

2 Gõ đoạn mã sau vào cửa sổ soạn thảo:

3 Lưu tập tin với tên precede.c

4 Biên dịch tập tin precede.c

5 Thực thi chương trình precede.c

Trang 30

Câu 8 Tính giá trị được gán (nằm phía bên trái) cho mỗi trường hợp sau:

Câu 9 Viết một chương trình nhập vào một số thực Ðơn vị tính cho số này là centimet (cm) Hãy in ra số tương đương tính bằng foot (số thực, có 1 số lẻ thập phân) và inch (số thực, có 1 số lẻ thập phân) Ðộ chính xác của foot và inch là một số lẻ thập phân

Hướng dẫn: 2.54 centimeters = 1 inch, và 12 inches = 1 foot

Nếu giá trị nhập vào là 333.3, kết quả là:

333.3 centimeters tương đương 10.9 feet

333.3 centimeters tương đương 131.2 inches

Câu 10 Tìm giá trị của iResult cho những câu lệnh sau:

Trang 31

3.2 MỘT SỐ HÀM CƠ BẢN

3.2.1 Hàm đại số

Tính trị tuyệt đối của số nguyên num: int abs(int num); (stdlib.h)

Tính trị tuyệt đối của số nguyên kiểu long int: long labs(long num); (stdlib.h)

/* Các hàm sau khai báo trong math.h */

Tính trị tuyệt đối của 1 số thực x: double fabs(double x); (math.h)

 Tìm số nguyên lớn nhất  x: double floor(double x);

 Tìm số nguyên bé nhất  x: double ceil(double x);

 Tìm phần dƣ của y/x: double fmod(double y, double x);

Tính căn bặc 2 của x: double sqrt(double x);

 Tính yx : double pow(double y, double x);

 Tính ex : double exp(double x);

 Tính ln(x): double log(double x);

 Tính log10x: double log10(double x);

3.2.2 Hàm lƣợng giác

Tính sin(x): double sin(double x);

 Tính cosine của x: double cos(double x);

 Tính tangent của x: double tan(double x);

 Tính arc cosine của (x): double acos(double x);

Trang 32

Tính arc sine của (x) double asin(double x);

 Tính arc tangent của x: double atan(double x);

3.2.3 Hàm xử lý ký tự <CTYPE.H>

int tolower(int ch); Trả về chữ thường

int toupper(int ch); Trả về chữ in hoa

int islower(int ch); Là chữ thường

 int isupper(int ch); Là chữ in hoa

 int isdigit( int ch); Là số

 int isalpha(int ch); Là mẫu tự

 int isalnum(int ch); Là số hay mẫu tự

 int isspace(int ch); Là dấu cách

Câu hỏi trắc nghiệm

Câu 11 là những công cụ thao tác dữ liệu

Câu 12 Một _ bao gồm sự kết hợp của các toán tử và các toán hạng

Câu 13 thiết lập sự phân cấp của một tập các toán tử so với tập các toán tử khác khi ước lượng một biểu thức

Câu 14 là một biểu thức có các toán hạng thuộc nhiều kiểu dữ liệu khác nhau

Câu 15 Một biểu thức được ép thành một kiểu nhất định bằng cách dùng

Câu 16 _ được dùng để kết hợp hay phủ định biểu thức chứa các toán tử quan hệ

A Những toán tử B Những toán hạng

C Những biểu thức D Không câu nào đúng

A Biểu thức B Hàm

C Con trỏ D Không câu nào đúng

A Những toán hạng B Độ ưu tiên

C Toán tử D Không câu nào đúng

A Biểu thức đơn B Biểu thức hỗn hợp

C Quyền ưu tiên D Không câu nào đúng

A Ép kiểu B Quyền ưu tiên

C Toán tử D Không câu nào đúng

A Những toán tử luận

B Những toán tử luận lý nhị phân

C Những toán tử phức D Không câu nào đúng

Trang 33

Câu 17 Những toán tử luận lý nhị phân là , _, và

Câu 18 Ðộ ưu tiên của các toán tử có thể được thay đổi bằng cách đặt các phần tử được yêu cầu của biểu thức trong _

Câu 19 Viết một chương trình nhập và cộng ba số

Câu 20 Viết một chương trình tính giá trị của biểu thức với các giá trị sau:

Câu 21 Viết một chương trình tính diện tích và chu vi của hình chữ nhật

Câu 22 Viết một chương trình tính thể tích của một hình trụ

Câu 23 Viết một chương trình tính lương thực lãnh của một nhân viên theo công thức dưới đây

A % , ^ , * and @ B &,|,~ and ^

C !,],& and * D Không câu nào đúng

A Dấu ngoặc xoắn ({ }) B Ký hiệu mũ ( ^)

C Những dấu ngoặc đơn (())

D Không câu nào đúng

TA : $120 Các mục khác : $450 Thuế :

PF :14% lương cơ bản và IT: 15% lương cơ bản Lương thực lãnh = Lương cơ bản + DA + HRA + TA + Các mục khác – (PF + IT)

Trang 34

CHƯƠNG 4: LỆNH NHẬP XUẤT DỮ LIỆU CƠ BẢN

Yêu cầu:

Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản sau:

 Hiểu các hàm nhập xuất có định dạng scanf() và printf()

 Sử dụng các hàm nhập xuất ký tự getchar() và putchar()

 Sử dụng khuôn dạng trong các hàm printf và scanf

Số tiết lên lớp: 2

Bảng phân chia thời lượng:

3 Sử dụng khuôn dạng ½

4 Bài tập thảo luận 1/2

Trọng tâm bài giảng:

 Hàm printf

 Hàm scanf

4.1 XUẤT DỮ LIỆU RA MÀN HÌNH

4.1.1 Lệnh printf

printf(“dòng điều khiển”, danh sách biểu thức)

- Các ký tự hiển thị

- Các ký tự điều khiển: ký tự \ dùng để bắt đầu một ký hiệu điều khiển

\n NewLine Dời con trỏ xuống dòng \\ Backslash In dấu \

\t Tab Dời con trỏ đến vị trí tab kế tiếp \” Dùng in dấu nháy kép “

\r Carriage return Dời con trỏ về đầu dòng \‟ Dùng in dấu nháy đơn „

\a Alert Phát tiếng beep ở loa

- Các mã đặc tả giá trị của biểu thức khi hiển thị Thứ tự các đặt tả phải phù hợp

với kiểu của biểu thức cần in

%d số nguyên hệ thập phân có dấu %e %E số thực dạng mũ 10 (1.23456e+2)

%u số nguyên không dấu %g Đọc 1 số dấu chấm động

Trang 35

printf(“%6d”,-456) | -456| //thêm dấu cách bên trái

printf(“%-6d”,-456) |-456 | //Canh lề trái printf(“%2d”,-456) |-456|

puts(“Day la xau ki tu”);

fprintf(stdprn,“dòng điều khiển”, danh sách biểu thức)

* Tham số stdprn dùng chỉ định thiết bị xuất là máy in

4.3 NHẬP GIÁ TRỊ CHO BIẾN

4.3.1 Toán tử gán và biểu thức gán

 Trong C có 2 kiểu gán giá trị nhƣ sau:

pt : +, -, *, /, %

Ví dụ 32: Toán tử gán

a = a + 2; <==> a += 2;

a = a*(b-c); <==> a *= b-c;

- Giá trị của biểu thức gán là giá trị của biểuthức vế phải

- Kiểu của biểu thức gán là kiểu của biến

Ví dụ 33: Biểu thức gán

Trang 36

a = b = 5; <==> a = 5; b = 5;

x = (a = 2) * (b = 3); <==> a = 2; b = 3; x = a * b ; (x==6)

4.3.2 Hàm scanf

int scanf(“chuổi điều khiển”, danh sách địa chỉ các biến);

int scanf(const char *đk [,danh sách đối số]);

Dùng đọc dữ liệu trên dòng nhập stdin vào cho các biến Nếu dòng nhập stdin không có đủ

dữ liệu thì hàm sẽ chờ nhập tiếp dữ liệu cho dòng nhập từ bàn phím, khi ấn phím Enter, hàm tiếp tục đọc dữ liệu cho các biến còn lại

Dòng nhập stdin: là vùng nhớ chứa dãy ký tự nhập từ bàn phím, bao gồm cả các ký tự

trắng như dấu cách, tab, ký tự xuống dòng \n

Chuỗi điều khiển: chứa 3 loại : Các Mã đặc tả kiểu dữ liệu của biến; Ký tự trắng; Ký tự

khác ký tự trắng

Mã đặc tả: dùng xác định cách thức đọc ký tự trên dòng nhập và chuyển thành kiểu dữ

liệu đã đặc tả trước khi gán nó cho biến tương ứng

Mỗi đặt tả có dạng: %[*][w][.sốlẻ]kýtựchuyểndạng

Ký tự chuyển dạng gồm: d, ld, o, lo, x, lx, f hay e, lf hay le, c, s

[dãykýtự]: Đọc cho đến khi gặp 1 ký tự không thuộc dãy [^dãykýtự]: Đọc cho đến khi gặp 1 ký tự thuộc dãy

W : chỉ định chiều dài tối đa ký tự cần đọc

- Đọc theo từng trường: mỗi trường là một dãy ký tự được kết thúc bằng ký tự trắng Cách đọc theo trường phụ thuộc vào [W]

Ví dụ: scanf(“%f%5f%3d%d”,&x,&y,&a,&b)

Với dòng nhập là: 54.32e-1 25 1234567

Thì các biến sẽ nhận giá trị : x = 54.32e-1; y = 25; a = 123; b = 4567

Dấu * dùng đọc dữ liệu trên dòng nhập nhưng không lưu vào bộ nhớ Như vậy,

đặt tả chứa dấu * sẽ không có đối số tương ứng

Ví dụ 34: Các ký hiệu trong scanf

scanf(“%d %*c %d”,&x,&y); dữ liệu nhập: “10/20” > x=10; y=20

Trang 37

Ký tự trắng: dùng bỏ qua 1 hay nhiều khoảng trống (như dấu cách, tab, ký hiệu xuống

dòng \n) trên dòng nhập cho đến khi gặp ký tự khác trống

Ví dụ 35: Dấu cách trong scanf

scanf(“%d %d “,&a,&b);

Dòng nhập phải có 3 trường: 25 12 5

Khi đó a=25, b=12 còn 5 vẫn còn trên stdin

Ký tự khác ký tự trắng: dùng đọc và bỏ qua ký tự phù hợp trên dòng nhập Hàm scanf sẽ

chấm dứt thao tác nếu không tìm thấy ký tự chỉ định

Ví dụ 36: Ký tự khác ký tự trắng trong scanf

scanf(“%d / %d”,&x,&y)

Nếu dữ liệu nhập là : 10/20 thì x =10; y = 20

Nếu dữ liệu nhập là : 10 20 <Enter> thì a=10 còn y thì không xác định Do hàm scanf

dò tìm ký tự / không thấy và số 20 „\n‟ (10) vẫn còn trên trường vào

nếu nhập: 25 123 <Enter> thì trôi qua lệnh scanf thứ 2 và a = 25, b = 123

4.3.3 Hàm getchar()

C=getchar() tương đượng scanf(“%c”,&c)

Kí tự đọc vào được hiện lên màn hình

4.3.4 Hàm getch()

Giống hàm getchar() nhưng không hiện kí tự gõ vào

Thường được dùng cuối chương trình để giữ nội dung màn hình xem kết quả

4.3.5 Hàm gets()

Đọc 1 dòng văn bản cho đến khi gõ Enter

Trình bày màn hình với màu sắc và vị trí theo y muốn của người dùng

Các lệnh trình bày màn hình nằm trong conio.h

4.4.1 Lệnh gotoxy(int x, int y)

Là hàm đặt con trỏ màn hình vào tọa độ x, y của màn hình Toạ độ x là tọa độ cột tính từ

1 đến 80, toạ độ y là tọa độ dòng tính từ 1 đến 25 vì màn hình được chia thành 25 dòng,

Trang 38

-màu có thể là một số nguyên nằm trong khoảng từ 0 đến 15 tương ứng với 1 trong các màu

-nếu màu chữ cộng thêm 128 (BLINK) sẽ có chữ nhấp nháy

4.4.4 Textbackground(màu nền)

-chọn màu nền

-màu nền là một biểu thức nguyên có giá trị từ 0 đến 7

4.4.5 Window(int x1,int y1,int x2,int y2)

Là hàm tạo ra cửa sổ văn bản có tọa độ 2 góc: góc trên bên trái (x1,y1) và góc dưới bên phải (x2,y2) Sau đó mọi lệnh ghi ra văn bản trên màn hình sẽ nằm trong cửa sổ này

4.5 TẠO SỐ NGẪU NHIÊN

Được khai báo trong stdlib.h và kết hợp với Time.h

void randomize(void); Khởi động bộ tạo số ngẫu nhiên

int random(int n); Cho 1 giá trị ngẫu nhiên từ 0 đến n-1

void srand(unsigned seed); Khởi động bộ số tạo số ngẩu nhiên cho hàm rand()

Nhưng cho phép trả về cùng số ngẫu nhiên với cùng khởi điểm seed

int rand(void); Cho 1 giá trị ngẫu nhiên từ 0 đến 32767

Ví dụ 37: Hàm rand

#include <stdlib.h> #include <stdio.h> #include <time.h>

void main(void)

{ int i;

time_t t; //srand((unsigned) time(&t));

printf("Ten random numbers from 0 to 99\n\n");

for(i=0; i<10; i++) { srand(i%4);

Câu 25 Hàm scanf() dùng _ tới các biến chứ không dùng tên biến

Câu 26 _ xác định định dạng cho các giá trị của biến sẽ được nhập và in

A printf() và scanf() B getchar() và putchar()

C puts() và gets() D Không câu nào đúng

C Mảng D Không câu nào đúng

Trang 39

Câu 27 _ được dùng bởi hàm printf() để xác định các đặc tả chuyển đổi

Câu 28 getchar() là một hàm không có bất cứ tham số nào (True/False)

Câu 29 Một _ là một nơi lưu trữ tạm trong bộ nhớ

Câu 30 Ðịnh dạng (Escape sequence) có thể được đặt bên ngoài chuỗi điều khiển của

printf()

(True/False)

Bài tập tại lớp

Câu 31 Hãy dùng câu lệnh printf() để :

Câu 32 Dùng câu lệnh scanf() và thực hiện:

Câu 33 Viết một chương trình xuất ra giá trị ASCII của các ký tự „A‟ và „b‟

Câu 34 Xét chương trình sau:

A Văn bản B Bộ định dạng

C Tham số D Không câu nào đúng

C * D Không câu nào đúng

A ROM (Bộ nhớ chỉ đọc) B Thanh ghi

C Vùng đệm D Không câu nào đúng

Xuất ra giá trị của biến số nguyên sum

Xuất ra chuỗi văn bản "Welcome", tiếp theo là một dòng mới

Xuất ra biến ký tự letter

Xuất ra biến số thực discount

Xuất ra biến số thực dump có 2 vị trí phần thập phân

a) Ðọc giá trị thập phân từ bàn phím vào biến số nguyên sum

b) Ðọc một giá trị số thực vào biến discount_rate

#include <stdio.h>

void main()

{

int breadth;

float length, height;

scanf(“%d%f%6.2f”, breadth, &length, height);

printf(“%d %f %e”, &breadth, length, height);

}

Sửa lỗi chương trình trên

Trang 40

Câu 35 Viết một chương trình nhập vào name, basic, daper (phần trăm của D.A),

bonper (phần trăm lợi tức) và loandet (tiền vay bị khấu trừ) cho một nhân viên Tính

lương như sau:

salary = basic + basic * daper/100 + bonper * basic/100 - loandet

Câu 36 Viết một chương trình yêu cầu nhập vào tên, họ của bạn và sau đó xuất ra tên,

Câu 39 So sánh kết quả của bài 1 và 2 Cho nhận xét về câu lệnh clrscr()

Câu 40 Soạn thảo đoạn chương trình sau, chạy thử và cho biết kết quả hiện trên màn hình

Bảng dữ liệu:

Tính salary và xuất ra kết quả dưới các đầu đề sau (Lương được in ra gần dấu đôla ($)):

#include<stdio.h>

void main()

{

printf(" Chao ban !"); /* Co trong tap stdio.h */

printf("Moi ban lam quen voi Turbo C");

getch(); /* Dung man hinh de xem ket qua */

printf(" Chao ban !\n");

printf("Moi ban lam quen voi Turbo C");

getch();/* Co trong tap conio.h */

}

Ngày đăng: 05/12/2020, 06:52

TỪ KHÓA LIÊN QUAN

w