You are on page 1of 100

CHƯƠNG 1

GIỚI THIỆU NGÔN NGỮ C

1
NỘI DUNG
Chương 1: Tổng quan
*Tổng quan ngôn ngữ C
*Các thành phần trong C
*Nhập, xuất
*Xử lý lỗi

2
LỊCH SỬ RA ĐỜI
*Ngôn ngữ C do Dennis Ritchie xây dựng từ
năm 1972 tại phòng thí nghiệm Bell Telephone
với mục đích tạo ngôn ngữ để viết HĐH UNIX.
Song nhờ có các tính năng ưu việt và tính mềm
dẻo nên được giới tin học chấp nhận
*Năm 1978, xuất bản quyển sách “The C
programming language” do Kernighan và
Ritchie viết.

3
ĐẶC ĐIỂM
* Bộ lệnh phù hợp với phương pháp lập trình có
cấu trúc
* Kiểu dữ liệu phong phú, cho phép định nghĩa
kiểu dữ liệu mới.
* Linh động về cú pháp, ít từ khóa.
*Ngôn ngữ mạnh và mềm dẻo, được dùng để viết
OS, chương trình điều khiển, soạn thảo văn bản,
đồ hoạ, bảng tính… và các chương trình dịch cho
các ngôn ngữ khác .
4
KHUYẾT ĐIỂM

*Cú pháp thuộc loại lạ và khó học.


*Một số ký hiệu có nhiều nghĩa khác nhau. Ví dụ:
dấu “*” là toán tử nhân, là khai báo con trỏ, là
toán tử thay thế, … Việc sử dụng đúng nghĩa các
toán tử phụ thuộc vào ngữ cảnh sử dụng.
*Việc truy nhập tự do vào dữ liệu, việc trộn lẫn các
kiểu dữ liệu… làm cho chương trình có phần bất
ổn.
5
Giới thiệu cơ bản về Dev-C++

6
Giới thiệu cơ bản về Dev-C++

*1.Nút tạo file mới


*2.Nút mở một file đã có
*3.Nút biên dịch và chạy chương trình
*4.Vùng soạn thảo code (mã chương trình)
*5.Vùng hiển thị lỗi nếu có.

7
Cấu trúc một chương trình C

8
Cấu trúc một chương trình C
Về cơ bản C không qui định 1 cách chặt chẽ cấu
trúc của một chương trình; C chỉ qui định một
chương trình phải có hàm main, và đồng thời đó là
chương trình chính của chương trình. Thông
thường một chương trình C gồm các phần:
*Khai báo thư viện;
*Khai báo biến; hằng;
*Chương trình chính;

9
Cấu trúc một chương trình C

10
CÁCH TRÌNH BÀY CHƯƠNG
TRÌNH
*Mỗi lệnh nằm trên một dòng. Cuối dòng
lệnh PHẢI có dấu chấm phẩy (;).
*Lệnh quá dài có thể được viết thành nhiều
dòng sao cho mỗi lệnh phải được quan sát
trọn vẹn trong pham vi cửa sổ lệnh.

11
CÁCH TRÌNH BÀY CHƯƠNG
TRÌNH (tt)
*Không nên đặt nhiều lệnh trên cùng một
dòng, ngay cả các khai báo biến, nếu các
biến có khác kiểu cũng nên đặt trên các
dòng khác nhau.
*Có các chú thích, ghi chú đầy đủ
*Chương trình phân cấp các khối lệnh con
theo từng cột
12
Tạo chương trình đầu tiên

*B1: Tạo 1 file mới (ctrl +N).


*B2: Gõ hoặc chép đoạn code sau vào vùng soạn
thảo.

13
Tạo chương trình đầu tiên

#include <stdio.h>
void main()
{
printf("Xin chao cac ban!");
}
Hoặc
#include <stdio.h>
int main()
{
printf("Xin chao cac ban!");
return 0;
} 14
Tạo chương trình đầu tiên

*B3: Lưu lại với tên file là bt1.cpp (lưu ngoài màn
hình hoặc document)
*B4: Click nút ktra lỗi F9
*B5: Click nút chạy chương trình F10
*Lưu ý: Thử lại click F11 ( cả ktra và chạy chương
trình)

15
Tạo chương trình đầu tiên

16
CÁC KHÁI NIỆM

*Dòng 1: Chứa phát biểu tiền xử lý


#include <stdio.h> .
*Vì trong chương trình này ta sử dụng các
lệnh trong thư viện của C là printf, do đó
bạn cần phải có khai báo của hàm thư viện
này để báo cho trình biên dịch C biết.
*Nếu không khai báo chương trình sẽ báo
lỗi. 17
CÁC KHÁI NIỆM

*Thư viện stdio.h viết tắt của standard


input output (std – i – o) là thư viện nhập
xuất chuẩn)
*Trong chương trình này không dùng thư
viện conio.h vì trong chuẩn C không có
thư viện này, và từ đó cũng không dùng
được getch() để dừng màn hình mà mình
đã thay bằng lệnh system("pause");
trong thư viện stdlib.h
18
CÁC KHÁI NIỆM

*Dòng 2: int main() là thành phần chính của


mọi chương trình C.
*Mọi chương trình C đều bắt đầu thi hành từ
hàm **main.
*Cặp dấu ngoặc () cho biết đây là khối hàm
(function).
*Hàm main() có từ khóa int đầu tiên cho biết
hàm này trả về giá trị kiểu nguyên (int).
19
CÁC KHÁI NIỆM

*Dòng 3, 5 (6): Khối lệnh: gồm nhiều lệnh


và được đặt trong cặp dấu ngoặc { }
*Cặp dấu ngoặc móc {} giới hạn thân của
hàm.
*Thân hàm bắt đầu bằng dấu { và kết thúc
bằng dấu }.

20
CÁC KHÁI NIỆM

*Dòng 4: Lệnh: thực hiện một chức năng


nào đó (khai báo, gán, xuất, nhập, …) ,kết
thúc bằng dấu chấm phẩy (;)

21
CÁC KHÁI NIỆM

*Dòng 4: Lệnh: thực hiện một chức năng


nào đó (khai báo, gán, xuất, nhập, …) ,kết
thúc bằng dấu chấm phẩy (;)

22
CÁC KHÁI NIỆM

*Dòng 6: return 0; Trả về giá trị kiểu nguyên


là 0 theo như đúng ban đầu là khai báo int
main().
*Khi dùng return để trả về giá trị của hàm thì
có thể bỏ qua lệnh này chương trình vẫn chạy
nhưng về chuẩn là sai, trả về 1 cũng sai, tóm
lại là trả về 0.
*Nếu trả về 1 số khác không thì hệ thống máy
tính sẽ hiểu là chương trình này sau khi chạy
phát sinh ra cần đó lỗi.
23
CÁC KHÁI NIỆM

24
DÒNG GHI CHÚ (COMMENT)

*Từ vị trí cụ thể đến cuối dòng: dùng dấu //


ngay tại vị trí đó.
*Tạo nhiều dòng ghi chú: dùng cặp ký tự /*
ngay trước dòng đầu tiên, và cặp ký tự */
ngay sau dòng cuối cùng.

25
CÁC THÀNH PHẦN TRONG C

26
KHAI BÁO SD THƯ VIỆN

*Xem Help để biết danh sách các include file

27
KHAI BÁO SD THƯ VIỆN

*#include<stdio.h> : Thư viện chứa các hàm vào/


ra chuẩn (standard input/output) :printf(), scanf(),
getc(), putc(), gets(), puts(), fflush() ,fopen(),
fclose(), fread(), fwrite(), getchar(), putchar(),
getw(), putw(),…
*#include<conio.h> : Thư viện chứa các hàm vào
ra trong chế độ DOS (DOS console) :clrscr(),
getch(), getche(), getpass(), cgets(), cputs(),
putch(), clreol(),…
28
KHAI BÁO SD THƯ VIỆN

*#include<math.h>: Thư viện chứa các hàm tính


toán :abs(), sqrt(), log(). log10(), sin(), cos(), tan(),
acos(), asin(), atan(), pow(), exp(),…
*#include<stdlib.h>: Dùng để xúc tiến nhiều phép
toán,bao gồm sự chuyển đổi, các số giả ngầu
nhiên, cấp phát vùng nhớ, kiểm soát quá trình,
môi trường, tín hiệu, tìm kiếm, và xếp thứ tự.
*#include<string.h>: Dùng để điều chỉnh dãy kí tự:
strcpy(), strncpy, strlen, strcat, strncat, strcmp,
strlwr, strupr, strrev, strchr, stricmp
29
CÁC KÝ TỰ ĐIỀU KHIỂN

*\n : Nhảy xuống dòng kế tiếp canh về cột đầu tiên.


*\t : Tab ngang.
*\r : Nhảy về đầu hàng, không xuống hàng.
*\a : Tiếng kêu bip.
*\\ : In ra dấu \
*\” : In ra dấu “
*\’ : In ra dấu ‘
*%%: In ra dấu % 30
BT2.CPP

31
BỘ KÝ TỰ THƯỜNG DÙNG

*Chữ cái hoa: A, B, ..., Z


*Chữ cái thường: a, b, c, ..., z
*Chữ số: 0, 1, ..., 9
*Các ký hiệu toán học: +, -, *, /, =, (, ),...
*Ký hiệu gạch nối: _
*Các ký hiệu đặc biệt như: . , ; [] {} ? ! \ & | % #
...
*Không được dùng các ký hiệu như: α, φ, Ω, π, …
hoặc tiếng việt có dấu: â, ă, ô…
32
TỪ KHÓA (KEYWORD)
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while bool catch class
delete friend inline new namespace
operator private protected public template
this throw try
33
CÁC KIỂU DỮ LIỆU

34
KIỂU SỐ NGUYÊN

STT TÊN KIỂU GHI CHÚ KÍCH THƯỚC


Ký tự 1 byte
1 char
Số nguyên 1 byte
2 unsigned char Số nguyên dương 1 byte
3 short Số nguyên 2 bytes
4 unsigned short Số nguyên dương 2 bytes
5 int Số nguyên 4 bytes
6 unsigned int Số nguyên dương 4 bytes
7 long Số nguyên 4 bytes
8 unsigned long Số nguyên dương 4 bytes
35
KIỂU SỐ THỰC
STT TÊN KIỂU GHI CHÚ KÍCH THƯỚC
1 float 4 bytes
2 double 8 bytes
3 long double 8 bytes

KIỂU LUẬN LÝ
STT TÊN KIỂU GHI CHÚ KÍCH THƯỚC
1 bool Gồm 2 giá trị: true hoặc false
36
BT3.CPP

37
TÊN
*Mỗi chúng ta ai cũng có tên, do vậy trong lập
trình C các thành phần cũng sẽ có tên. Ví dụ như
tên hàm, tên biến, tên hằng số, tên nhãn,…
*Tên hợp lệ là một chuỗi liên tiếp gồm ký tự chữ,
số hoặc dấu gạch dưới. Tên phân biệt chữ hoa
chữ thường và không trùng với từ khóa.
*Tên phân biệt chữ hóa chữ thường nên: a khác
A, TỔNG khác tính tổng.

38
TÊN

39
BIẾN

*Biến để lưu trữ giá trị do người dùng nhập vào


hoặc các giá trị tạm thời trong quá trình tính
toán.
*Mỗi biến sẽ có tên và kiểu dữ liệu tương ứng.
*PHẢI khai báo BIẾN trước khi sử dụng

40
QUY TẮC ĐẶT TÊN
Dùng để đặt tên biến, tên hằng, tên hàm, …
* Bắt đầu bằng một ký tự.
* Các ký tự trong tên biến chỉ có thể là các ký tự
chữ, số hoặc dấu gạch dưới (_)
* Không được trùng với các từ khoá.
* Không được trùng với phạm vi khai báo.
* Tên dễ hiểu, súc tích và gợi nhớ.
* Phân biệt chữ hoa và thường
41
KHAI BÁO BIẾN

42
BT4.CPP

43
PHẠM VI BIẾN
* Mỗi biến được khai báo ở đâu thì sẽ được dùng
và có phạm vi hoạt động tương ứng từ nơi nó
khai báo đến dấu đóng ngoặc nhọn } ngang cấp
với nó.
* Biến toàn cục
* Biến cục bộ
* Biến tĩnh

44
BT5.CPP

45
ĐỊNH NGHĨA HẰNG SỐ
*Hằng là đại lượng không thay đổi giá trị trong quá trình thi hành
chương trình
*Dùng toán tử #define
Cú pháp: #define <tên_hằng> <giá_trị_hằng>
Ví dụ: #define MAX 100;
*Biến hằng được định nghĩa nhờ từ khoá const với cú pháp như sau:
const <kiểu_dữ_liệu> <tên_biến> = <giá_trị>;
Ví dụ: const int MAX = 100;

Tên hằng số nên viết bằng chữ in HOA


46
HẰNG SỐ
*Hằng cũng giống như biến nhưng không thể thay đổi giá
trị. Nếu bạn cố tình gán giá trị mới cho hằng thì sẽ bị sai.
*Tên hằng thường viết in hoa để dễ nhận biết và phân biệt
với biến.
*Cú pháp khai báo hằng: #define TÊN_HẰNG giá_trị
(Lưu ý không có dấu chấm phẩy ở cuối).
*Hằng số: Đó là các giá trị xác định, một hằng số có thể là
nguyên (có kiểu dữ liệu int, hay long int) hay thực (có
kiểu dữ liệu là float, double, long double).

47
HẰNG SỐ
*Hằng ký tự: Được đặt trong dấu nháy đơn. Ví dụ: 'A', 'a'
tương ứng với giá trị nguyên 65, 97 trong bảng mã
ASCII.
*Hằng chuỗi: Là tập hợp các ký tự được đặt trong cặp dấu
nháy kép " ". Ví dụ: “Lap trinh C"
*Chú ý: Một hằng chuỗi được trữ tận cùng bằng ký tự null
(\0)

48
HẰNG SỐ

49
HẰNG SỐ

50
BT6.CPP

51
TOÁN TỬ TOÁN HỌC

52
BT7.CPP

53
ÉP KIỂU
*Thông thường, nếu cả hai toán hạng là số nguyên sau đó
kết quả sẽ là một số nguyên.
*Tuy nhiên, một hoặc cả hai toán hạng là số thực thì sau
đó kết quả sẽ là một số thực.
*Khi cả hai toán hạng của toán tử chia là số nguyên thì sau
đó phép chia được thực hiện như là một phép chia số
nguyên và không phải là phép chia thông thường mà
chúng ta sử dụng.

54
ÉP KIỂU
*Phép chia số nguyên luôn cho kết quả là phần nguyên của
thương.
*Ví dụ: 7 / 5 = 1 chứ không phải 7 / 5 = 1.4.
*Để khắc phục lỗi này thì ta có thể chuyển một số hoặc cả
2 số sang kiểu thực rồi thực hiện phép chia.
*Cách chuyển kiểu (hay ép kiểu) ta như sau:
(kiểu cần chuyển) biến.
VD: (float) a;

55
BT8.CPP

56
TOÁN TỬ QUAN HỆ

57
TOÁN TỬ LÝ LUẬN

58
TOÁN TỬ TĂNG GIẢM
*Các toán tử tăng một (++) và giảm một (- -) cung cấp các
tiện lợi tương ứng cho việc cộng thêm 1 vào một biến số
hay trừ đi 1 từ một biến số.

59
BT9.CPP

60
TOÁN TỬ GÁN

61
TOÁN TỬ GÁN

62
BT10.CPP

63
TOÁN TỬ LẤY KÍCH THƯỚC

64
THỨ TỰ ƯU TIÊN PHÉP TOÁN
Toán tử Độ ưu tiên Trình tự kết hợp
() [] -> 1 Từ trái qua phải
! ~ ++ -- - + * & sizeof 2 Từ phải qua trái
* / % 3 Từ trái qua phải
+ - 4 Từ trái qua phải
<< >> 5 Từ trái qua phải
< <= >= > 6 Từ trái qua phải
== != 7 Từ trái qua phải
& 8 Từ trái qua phải
| 9 Từ trái qua phải
^ 10 Từ trái qua phải
&& 11 Từ trái qua phải
|| 12 Từ trái qua phải
? : 13 Từ phải qua trái
= += -= *= /= %= 65 14 Từ phải qua trái
66
Tập tin Header <stdio.h>
*#include<stdio.h> - câu lệnh tiền xử lý
*stdio.h - tập tin header (header file)
*Chứa các macro sử dụng cho nhiều hàm nhập/xuất trong
C
*Các macro trong stdio.h giúp các hàm printf(), scanf(),
putchar(), getchar() thực thi

67
Chữ f trong printf và scanf
*Chúng ta đã biết print nghĩa là in, scan là quét hay ta gọi
trong này là để nhập.
*Vậy tại sao chúng lại có chữ f đằng sau để thành printf và
scanf ?
*Chữ f này có nghĩa là format (định dạng).

68
CHUỖI ĐỊNH DẠNG
STT KIỂU GHI CHÚ ĐỊNH DẠNG
KIỂU LIÊN TỤC (SỐ THỰC)
1 float %f
2 double %lf
3 long double %lf
KIỂU RỜI RẠC (SỐ NGUYÊN)
Ký tự %c
1 char
Số nguyên %d
2 unsigned char Số nguyên dương %d
3 int Số nguyên %d
4 unsigned int Số nguyên dương %u
5 long Số nguyên %ld
6 unsigned long Số nguyên dương %lu
7 char * Chuỗi %s
69
printf ( )
*Cú pháp:
printf(“Chuỗi định dạng ”,[Các biểu thức]);
*Giải thích:
➢Chuỗi định dạng: dùng để qui định kiểu dữ liệu, cách
biểu diễn, độ rộng, số chữ số thập phân... Một số định
dạng khi đối với số nguyên, số thực, ký tự.
➢Các biểu thức: là các biểu thức mà chúng ta cần xuất giá
trị của nó lên màn hình, mỗi biểu thức phân cách nhau
bởi dấu phẩy (,).

70
printf ( )

71
printf ( )

72
printf ( )

73
printf ( )

74
BT12.CPP

75
scanf()
*Cú pháp:
scanf(“Chuỗi định dạng”, địa chỉ của các biến);
*Giải thích:
➢Chuỗi định dạng: dùng để qui định kiểu dữ liệu, cách
biểu diễn, độ rộng, số chữ số thập phân... Một số định
dạng khi nhập kiểu số nguyên, số thực, ký tự.
➢Địa chỉ của các biến: là địa chỉ (&) của các biến mà
chúng ta cần nhập giá trị cho nó. Được viết như sau:
&<tên biến>.

76
KIỂU DỮ LIỆU CƠ BẢN

77
KIỂU DỮ LIỆU DẪN XUẤT

78
BT13.CPP

79
Lỗi khi nhập chuỗi bằng scanf
*Nếu dùng hàm scanf để nhập chuỗi thì sẽ thấy rằng
không thể nhập được chuỗi có dấu cách hoặc nếu trước
đó nhập số thì sau đó không nhập được chuỗi nữa.
*Lý do là scanf chỉ đọc được dữ liệu không có khoảng
trắng (đấu cách, dấu tab, enter, …) và các khoảng cách
này sẽ được lưu vào bộ đệm bàn phím do đó chỉ nhận
được chuỗi đầu tiên trước đấu cách mà thôi, sau mỗi dấu
cách, các giá trị tiếp theo nếu phù hợp với kiểu dữ liệu
của các biến tiếp theo thì nó sẽ gán luôn cho chúng và sẽ
không được nhập nữa

80
BT14.CPP

81
BT14.CPP

82
KHẮC PHỤC
*Để nhập được chuỗi có khoảng trắng (dấu cách) chúng ta
sử dụng hàm gets.

*Để không bị trôi lệnh khi nhập số trước và chuỗi sau ta


cần xóa bộ đệm bàn phím bằng lệnh fflush(stdin); ngay
sau khi nhập số.

83
BT15.CPP

84
VÙNG ĐỆM NHẬP/XUẤT
*Là một không gian lưu trữ tạm thời trong bộ nhớ hoặc
trên thẻ điều khiển thiết bị
*Được sử dụng để đọc và viết các ký tự ASCII
*Bộ đệm Nhập/Xuất: Buffered File I/O, Console I/O
*Các hàm Console I/O chuyển các thao tác đến thiết bị
xuất nhập chuẩn của hệ thống
*Trong ‘C’ các hàm console I/O đơn giản nhất là:
➢getchar( )
➢putchar( )
85
getchar( )
*Hàm không có đối số.
*Dùng đọc dữ liệu nhập, một ký tự từ bàn phím
*Các ký tự đặt trong vùng đệm đến khi người dùng gõ
phím enter

86
BT16.CPP

87
putchar( )
*Hàm xuất ký tự trong ‘C’
*Có một đối số

88
BT17.CPP

89
XUẤT KÝ TỰ ĐẶC BIỆT
Ký tự Ý nghĩa Ví dụ
printf(“ \’ ”);
\’ Xuất dấu nháy đơn
Kết quả: ‘
printf(“ \” ”);
\” Xuất dấu nháy đôi
Kết quả: “
Xuất dấu chéo pritnf(“ \\ ”);
\\
ngược “\” Kết quả: \
Dùng để gán ký tự
\0 Ký tự Null
kết thúc của chuỗi
\a Alert : Tiếng bip
90
XUẤT KÝ TỰ ĐẶC BIỆT
Ký tự Ý nghĩa Ví dụ
Tab vào một printf(“xyz\tzyx”);
\t
đoạn ký tự trắng Kết quả: xyz zyx
print("xyz\t\bzyx”);
\b Xuất lùi về sau
Kết quả: xyzzyx
printf(“xyz\nzyx”);
\n hoặc
Xuống dòng Kết quả: xyz
endl
zyx
printf("xyz\rzyx”);
\r Về đầu dòng 91
Kết quả: zyx
92
CÁC LỖI THƯỜNG GẶP KHI
VIẾT CHƯƠNG TRÌNH
*Quên khai báo các biến sử dụng trong chương
trình.
*Lưu một giá trị vào một biến nhưng không cùng
kiểu dữ liệu với biến.

93
CÁC LỖI THƯỜNG GẶP KHI
VIẾT CHƯƠNG TRÌNH
*Sử dụng giá trị của phép chia không chính xác. Lỗi này
thường xuất hiện trong các biểu thức có nhiều toán hạng
và lỗi này rất khó phát hiện.
Ví dụ: 3.2 + 2/3 + 1.5 thì sẽ cho kết quả sẽ bằng 4.7
thay vì kết quả đúng phải bằng 5.36666666666667
*Sử dụng một biểu thức mà trong đó chứa nhiều loại dữ
liệu nhưng lại không biết chắc chắn kiểu dữ liệu của kết
quả.

94
BÀI TẬP 1
Cho biết kết quả của những lệnh sau:
int a, b;
b=a++ + ++a + --a;
printf("a=%d, b=%d“,a,b);
Với a = 2 Kết quả:
Với a = 9 Kết quả:
----------------------------------------------------------------------
int a, b;
b=--a + --a;
--b;
printf(“a=%d, b=%d,a,b);
Với a = 19 Kết quả:
95
Với a = 10 Kết quả:
int a, b;
b=a%2 + a/2 + --a;
printf("a=%d, b=%d“,a,b);
Với a = 17 Kết quả:
Với a = 3 Kết quả:
------------------------------------------------------------------------------------
int a, b;
b=a/3 + a--;
printf("a=%d, b=%d“,a,b);
Với a = 8 Kết quả:
Với a =21 Kết quả:
-----------------------------------------------------------------------------------

96
Các định danh nào sau đây là không hợp lệ?
* Main
* Tinh Tong
* Tinh-Tong
* Tinh_Tong
* x_Mu_2
* 2_Mu_2
* using
* class
* Tien$
* default
* yahoo.com
97
* Cho biết những chỗ sai và sửa lại cho đúng
int n = -100;
uint i = -100;
int = 2.9;
long m = 2, p = 4;
int 2k;
float y = y * 2;
char ch = “b”;
*Viết chương trình in ra màn hình thông tin cá nhân theo
mẫu sau:
Ho ten:
Lop:
Thong tin lien lac:
Dia chi:
98
So dien thoai:
BÀI TẬP 2
Mô tả giải thuật bằng mã giả, lưu đồ và viết các
chương trình sau:
* Viết chương trình nhập vào giờ phút và giây,
đổi ra giây và xuất kết quả ra màn hình.
* Viết chương trình nhập vào 3 số nguyên a, b
và c, tính giá trị trung bình cộng của 3 số trên
và xuất kết quả ra màn hình.

99
* Viết chương trình cho phép nhập vào một số đo
nhiệt độ theo độ Fahrenheit và xuất ra nhiệt độ
tương đương của nó theo độ Celsius, sử dụng
công thức chuyển đổi:
5 0
0
C = ( F − 32)
9
* Viết chương trình nhập vào 3 số nguyên a, b và
c, cho biết 3 số vừa nhập có thứ tự tăng dần
(a<b<c) không? Và xuất kết quả.

100

You might also like