Professional Documents
Culture Documents
a=b Δ=0
Biểu diễn bằng lưu đồ (4)
• Thao tác chọn lựa: có thể có hai hướng đi
– một hướng ứng với điều kiện thỏa
– một hướng ứng với điều kiện không thỏa.
– 2 cung có nhãn
• Đ/Đúng,Y/Yes
• S/Sai,N /N o
Biểu diễn bằng lưu đồ (5)
Tính tiền công cho một công nhân tùy theo giờ làm
việc của họ.
CHƯƠNG 2
CÁC KHÁI NIỆM CƠ BẢN
Nội dung
1. Ngôn ngữ lập trình
2. Chương trình dịch
3. Soạn thảo mã nguồn-Biên dịch-Liên kết và
thực thi
4. Ví dụ chương trình C
5. Các thành phần của chương trình C đơn giản
1. Ngôn ngữ lập trình (1)
• Con người liên lạc với nhau dùng:
– ngôn ngữ tự nhiên: các mẫu từ ngữ và âm thanh
• Con người “nói chuyện” với máy tính dùng:
– Ngôn ngữ lập trình: tập từ ngữ và ký hiệu
• Tuân theo các luật được gọi là cú pháp (syntax)
• Có rất nhiều ngôn ngữ lập trình đang được sử
dụng.
1. Ngôn ngữ lập trình (2)
• Dựa vào mức độ chi tiết hóa việc mô tả các thao
tác, người ta chia ngôn ngữ lập trình thành các
lớp:
– Ngôn ngữ máy,
– Hợp ngữ,
– Ngôn ngữ cấp cao.
• Các ngôn ngữ cấp cao gần với ngôn ngữ tự nhiên
nên rất tiện lợi cho việc mô tả các thao tác và dễ
học, dễ nhớ.
1. Ngôn ngữ lập trình (3)
+1300042774
Ngôn ngữ máy +1400593419
+1200274027
LOAD A
Hợp ngữ ADD B
STORE C
- Các phát biểu được đặt giữa cặp ngoặc { và } của hàm
(main), tạo nên “thân hàm”.
- Mỗi phát biểu đơn (câu lệnh) được kết thúc bởi ‘;’
- Các phát biểu cùng được đặt giữa { và } tạo thành phát
biểu ghép (còn gọi khối lệnh).
5. Các thành phần của chương trình
C/C++ đơn giản (4)
(4) Khai báo hàm và định nghĩa hàm.
BIẾN VÀ HẰNG
Nội dung
1. Danh hiệu
2. Từ khóa
3. Kiểu dữ liệu
4. Khái niệm biến, vùng nhớ cho biến
5. Các kiểu cơ bản của biến
6. Định nghĩa kiểu với typedef
7. Định nghĩa biến và gán trị cho biến
8. Hằng
1. Danh hiệu (1)
• Danh hiệu: được dùng để xác định các đại lượng khác
nhau trong một chương trình như biến, hằng, hàm,… Là
dãy kí tự liền nhau, gồm:
- kí tự chữ
- kí tự số
- kí tự ‘_’ (underscore character).
• Qui tắc (đặt tên):
- Chỉ có thể bắt đầu với một kí tự chữ hoặc kí tự ‘_’
- Không trùng “từ khóa”.
- Phân biệt chữ in, chữ thường.
1. Danh hiệu (2)
• Mỗi biến chỉ có thể lưu một loại giá trị nhất
định, tùy thuộc kiểu biến (KDL).
4. Khái niệm biến, vùng nhớ cho biến (2)
4. Khái niệm biến, vùng nhớ cho biến (3)
• Giá trị của biến có thể thay đổi, nhưng tại mỗi thời
điểm một biến chỉ lưu một giá trị.
5. Các kiểu dữ liệu cơ bản
• Kiểu số nguyên (int)
• Kiểu số thực
– Số dấu phNy động độ chính xác đơn (float)
– Số dấu phNy động độ chính xác kép (double)
• Kiểu ký tự (char)
Kiểu số nguyên (1)
char unsigned char
int unsigned int
long unsigned long
Ví dụ:
const float PI= 3.1459;
const int DVHT_m1 = 10;
Khi không định kiểu hằng, hằng có kiểu mặc định
là kiểu int
Kết quả
Định nghĩa hằng ký hiệu,
dùng từ khóa define
#define TenHang giaTriHang
int n, S = 0;
cout<<“Ban hay nhap so nguyen duong: “;
cin>>n;
for (int i= 1; i<n; i=i+2)
S = S+i;
cout<<“Tong so le nho hon n: S =”<<S;
Toán tử sizeof
• Nếu phép tăng (ký hiệu ++) đặt ngay trước tên biến, là
phép toán “tăng trước”.
• Tương tự, phép giảm (ký hiệu --) đặt ngay trước tên
biến, là phép toán “giảm trước”.
• Giá trị của biến được tăng (giảm) 1 đơn vị, sau đó giá
trị mới này được dùng trong biểu thức mà biến xuất
hiện.
int a= 5, b= 6, c;
c= ++a + b; c= a * --b;
7. Phép tăng và giảm (2)
• Nếu phép tăng đặt ngay sau tên biến, là phép toán
“tăng sau”.
• Nếu phép giảm đặt ngay sau tên biến, là phép toán
“giảm sau”.
• Giá trị hiện tại của biến được dùng trong biểu thức mà
nó xuất hiện, sau đó giá trị của biến mới được tăng
(giảm) 1 đơn vị.
int a= 5, b= 6, c;
c= a++ + b; c= a * b--;
8. Phép gán và biểu thức gán (1)
• Phép gán “=“ để thay đổi giá trị biến:
tenBien = giatri;
• Chú ý phân biệt toán tử gán với khái niệm đẳng thức
trong toán học.
• Biểu thức gán là biểu thức có dạng:
v=e
• Trong đó v là một biến, e là một biểu thức.Giá trị của
biểu thức gán là giá trị của e, kiểu của nó là kiểu của
v.
8. Phép gán và biểu thức gán (2)
• Nếu đặt dấu ; vào sau biểu thức gán thì ta được toán tử
gán:
v = e;
• Biểu thức gán có thể sử dụng trong các phép toán và
các câu lệnh như các biểu thức khác. Ví dụ 1:
a = b = 5;
thì điều đó có nghĩa là gán giá trị của biểu thức:
b=5
cho biến a. Kết quả là b = 5 và a = 5.
• Ví dụ 2: Sau khi thực hiện câu lệnh
z = (y = 2)*(x = 6);
thì y có giá trị 2, x có giá trị 6 và z có giá trị 12.
8. Phép gán và biểu thức gán (3)
• Phép toán kết hợp là phép gán cùng với phép toán,
tác động lên chính biến được gán.
+= -= *= /= %=
&= |= ^= <<= >>=
Ví dụ:
i += 2; //⇔ i = i + 2;
a *= b+1 //⇔ a = a*(b + 1);
a <<= 1 //⇔ a = a<<1;
9. Thứ tự thực hiện phép toán
• Khi thực hiện tính toán trong một biểu thức, phép
toán có độ ưu tiên cao hơn sẽ thực hiện trước.
b= (a= 3)+2;
b= a= 3 + 2;
n= 18/4*4;
• Bảng sau cho biết độ ưu tiên phép toán (thứ tự
giảm dần).
• Trừ phép gán và phép 1 toán hạng, các phép cùng
cấp sẽ ưu tiên trái hơn.
Ngoặc đơn ( )
• Một biểu thức trở thành một phát biểu khi nó được
kết thúc bởi dấu “;”, được gọi là phát biểu đơn.
• Các dấu { và } dùng để nhóm các khai báo và phát
biểu đơn → phát biểu ghép hay phát biểu khối.
• Về mặt cú pháp, phát biểu khối tương đương một
phát biểu đơn.
• Phát biểu khối được dùng trong định nghĩa hàm,
dùng với các phát biểu if, else, while, for,...
2. Phát biểu if (1)
expr S
Đ
statement1
statement2
...
other statements
2. Phát biểu if (2)
Dạng của phát biểu if:
if (expr)
statement;
Chỉ khi kết quả của expr là TRUE
(giá trị của expr ≠ 0),
thì statement được thực thi.
2. Phát biểu if (3)
expr S
Đ
• Phát biểu if có thể có phần else: stat1 stat1b
stat2 stat2b
if (expr) ... ...
statement_1a;
else other stats
statement_1b
• Nếu phát biểu ứng với phần if được thực thi, phần
else của if đó sẽ không được xét đến.
Toán tử điều kiện ? :
expr S
Đ
stat1 stat1b
Tìm max{a, b} ?
m = a>b ? a : b;
Tìm |a| ?
m = a>0 ? a : -a;
Toán tử điều kiện ? :
Đ stats(N)
expr == val_N
S
stats(N+1)
3. Phát biểu switch (2)
switch (expr)
{
case val_1: stats(1);
break;
Các hằng nguyên case val_2: stats(2);
break;
không trùng nhau //...
case val_N: stats(N);
break;
default:
stats(N+1);
}
Ví dụ
3. Phát biểu switch (3)
if (n > 0)
for (i = 0; i < n; i++)
if (a[i] > 0)
{
cout<<" !!! ";
return i;
}
else
cout<<”n phai duong !";
Bài tập 2
• Hãy cho cho biết, có lỗi nào trong chương trình sau ?
#include <iostream.h>
void main()
{
int x;
cin>>x;
if( x > 0)
cout<<" x duong !";
else (x < 0)
cout<<" x am !";
else
cout<<” x khong am khong duong !”;
}
Bài tập 3
• Hãy sửa đoạn chương trình sau đây (sửa ít nhất
có thể) sao cho kết quả nhận được là hợp lí ?
#include <iostream.h>
void main()
{
int x= 1:
if( x = 1);
cout<<" x bang 1";
otherwise
cout<<" x khac 1";
}
4. Phát biểu while (1)
expr
S
Đ
statement1
statement2
...
other statements
4. Phát biểu while (2)
while (expr)
{
//statements;
}
4. Phát biểu while (3)
• Khi while thực thi :
B1. Tính toán biểu thức expr.
B2. Nếu kết quả của expr là TRUE (≠0), thì sang B3.
Nếu kết quả của expr là FALSE (=0), thì sang B4.
B3. Thực thi statement1, statement2,… thân của
while. Quay trở về B1.
B4. Kết thúc while.
(các phát biểu sau while tiếp tục thực thi).
4. Phát biểu while (4)
/10 /10
n = 7023 n = 702 n = 70
(1) (2)
/10 (3)
n=7
/10 (4)
n=0
???
dem = (n==0);
???
5. Phát biểu for (1)
dem = gtbd
S
BThuc
Đ
CacPhatBieu
dem += gtbn
PhatBieuKhac
5. Phát biểu for (2)
Cấu trúc lặp for dựa trên biến đếm với giá trị
khởi đầu, thay đổi biến đếm và biểu thức. Dạng:
for ( gán trị đầu cho biến đếm ;
biểu thức ;
thay đổi giá trị biến đếm theo bước nhảy )
{
//Cac phat bieu
}
5. Phát biểu for (2)
• Khi phát biểu for thực thi:
B1. Gán trị ban đầu: dem = gtbd
B2. Tính toán biểu thức BThuc.
B3. Nếu BThuc là TRUE (≠0), thì sang B4.
Nếu BThuc là FALSE (=0), thì sang B6.
B4. Các phát biểu (CacPhatBieu) thân của for thực thi.
B5. Thay đổi giá trị biến đếm (dem += gtbn).
Quay trở về B2.
B6. Kết thúc for, PhatBieuKhac sau for tiếp tục thực thi
(2)
(1)
(3) (4)
(i>n)
Có bao nhiêu số dương < N chia hết cho 3 ?
(1) (2)
(3) (4)
(i≤n)
Hãy cho biết số nguyên N có bao nhiêu chữ số ?
Không nên !!
6. Phát biểu do-while (1)
statement1
statement2
...
S
expr
other statements
6. Phát biểu do-while (2)
Phát biểu do-while tính biểu thức sau thực thi các phát
biểu trong phần thân. Dạng:
do
{
//statements
}
while ( expr );
6. Phát biểu do-while (3)
• Khi phát biểu do-while thực thi:
B1. Các phát biểu (statements) thân của do-while thực thi.
B2. Tính toán biểu thức expr.
B3. Nếu expr là TRUE (≠0), quay trở về B1.
Nếu expr là FALSE (=0), kết thúc do-while.
(Các phát biểu khác sau while tiếp tục thực thi)
• Phát biểu break kết thúc cấu trúc lặp gần nhất mà nó
xuất hiện trong đó, không cần biết kết quả của expr
• Phát biểu break thường xuất hiện cùng với phát biểu if.
– Khi gặp continue bên trong phát biểu while hoặc do-while,
máy sẽ chuyển tới bước tính toán biểu thức (bước 1 trong
while, bước 2 trong do-while).
HÀM và
MẢNG MỘT CHIỀU
Nội dung
1. Chương trình con
2. Khai báo hàm và định nghĩa hàm
3. Gọi hàm
4. Truyền tham số
5. Giá trị trả về
6. Phạm vi của biến
7. Biến mảng
8. Biến mảng là tham số của hàm
1. Chương trình con (1)
• Chương trình con: là một phần mã trong một chương
trình lớn hơn, phần mã này thực hiện một tác vụ cụ thể
và tương đối độc lập với phần mã còn lại.
• Một chương trình con thường được viết mã sao cho nó
có thể được gọi nhiều lần từ nhiều nơi trong thời gian
chạy của một chương trình (có thể được gọi bởi chính
nó).
• Các chương trình con thường được tập trung thành các
thư viện, là một cơ chế quan trọng cho việc chia sẻ và
tái sử dụng mã.
1. Chương trình con (2)
• Chương trình con có 2 loại: Thủ tục
(Procedure) và hàm (Function):
– Thủ tục (PROCEDURE): Dùng để thực hiện
một hay nhiều nhiệm vụ nào đó.
– Hàm (FUNCTION): Trả về một giá trị nào đó
(có kiểu vô hướng, kiểu string hoặc kiểu con
trỏ). Hàm có thể sử dụng trong các biểu thức.
1. Chương trình con (3)
• Khi nào thì nên dùng thủ tục/hàm:
– Dùng hàm:
• Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô
hướng, kiểu string hoặc kiểu con trỏ).
• Phát biểu gọi CHƯƠNG TRÌNH CON cần nằm trong
các biểu thức tính toán.
– Dùng thủ tục:
• Kết quả của bài toán không trả về giá trị nào hoặc trả về
nhiều giá trị hoặc trả về kiểu dữ liệu có cấu trúc (Array,
Record, File).
• Phát biểu gọi CHƯƠNG TRÌNH CON không nằm trong
các biểu thức tính toán.
1. Chương trình con (4)
• Chương trình con được dùng khi xây dựng các
chương trình lớn nhằm:
– giảm đáng kể kích thước và chi phí của một chương
trình
– làm cho chương trình dễ theo dõi,
– dễ sửa chữa,
– nâng cao độ tin cậy của chương trình.
• Một đặc điểm nổi bật của chương trình con là nó
có tính đệ quy nhờ thế mà nhiều bài toán được giải
quyết dễ dàng.
• Chương trình con trong ngôn ngữ C là hàm.
2. Khai báo hàm, định nghĩa hàm (1)
• Định nghĩa hàm gồm tên hàm, các tham số và thân
hàm (chứa các phát biểu chương trình), thực thi một
việc cụ thể.
• Dạng định nghĩa hàm:
2. Khai báo hàm, định nghĩa hàm (2)
trong đó:
– Kiểu trả về (return_type, còn gọi là kiểu hàm) tương ứng
với kiểu của giá trị mà hàm trả về thông qua phát biểu
return.
– Tên hàm (func_name) được đặt theo nguyên tắc đặt tên,
nhưng nên đặt tên sao cho dễ hiểu.
– ParameterList là danh sách tham số, mỗi tham số được
xác định bởi kiểu dữ liệu và tên. Các tham số phân cách
nhau bởi dấu phẩy. Có thể là danh sách rỗng.
– Phần thân hàm nằm giữa cặp ngoặc { và }.
2. Khai báo hàm, định nghĩa hàm (3)
• Nếu không xác định return_type, mặc định sẽ là
kiểu int.
• Nếu hàm không trả về giá trị, dùng void (thay cho
return_type).
• Không được phép đặt định nghĩa hàm này trong
một hàm khác.
• Các hàm được định nghĩa không phải theo một thứ
tự nào.
• Nếu có phát biểu gọi hàm trước khi hàm được
định nghĩa thì cần có một khai báo hàm trước lời
gọi hàm đó.
2. Khai báo hàm và định nghĩa hàm
7 -8 6
s[0]
s[1] s[2] s[3] s[48] s[49]
Ví dụ:
int F[7]; ⇒ định nghĩa 7 biến kiểu int gồm:
F[0], F[1],f[2],… F[6].
F[0]=-2, F[1]=5, F[2]=1;
-2 5 1
Định nghĩa mảng một chiều (4)
Ví dụ:
double x[12];⇒định nghĩa 12 biến kiểu double
gồm: x[0], x[1], x[2],… x[11].
x[0]=1.2, x[1]=3.1;
x[0] x[10]
x[1] x[2] x[11]
1.2 3.1 …
Định nghĩa mảng một chiều (5)
Ví dụ:
- Để khai báo mảng số nguyên có 25 phần tử với tên là
mg,
= Khai báo 25 biến có tên chung là mg:
int mg[25];
hay:
#define MAX 25
int mg[MAX];
Lưu trữ
long a[20];
⇒ sizeof(a) ≡ 80
⇒ sizeof(a[0]) ≡ sizeof(a[1]) ≡ …≡ 4
Lưu ý (1)
Không thể dùng biến mảng như thông thường.
int a[6];
a = -2; //err
cout<<a; //err
Mà phải dùng từng phần tử trong chúng.
Mỗi phần tử được dùng như một biến đơn.
int a[6];
a[1] = -2;
cin>>a[0];
cout<<a[0]*a[1];
Lưu ý (2)
⇒ Cấp phát 10 ô nhớ kiểu char, lần lượt gán 6 giá trị
cho 6 ô nhớ đầu
Khởi tạo
i=1 ai an-i-1
i=2 ai an-i-1
a0 a1 a2 a3 a4 a5 a6
a= 3 7 6 9 2 1 8
n=7
Vd05
Vd2: Hàm sắp xếp tăng các phần tử của mảng. Ví dụ:
a= [3 7 4 9] → a = [3 4 7 9]
Vd06
Vd3: Tìm xem một giá trị x có trong mảng ? Ví dụ:
a= [3 7 4 9], x= 4
→ x nằm ở vị trí 2 trong mảng a
x= 3
n=7
a= 6 7 3 2 9 2 8
k=2
x= 4
a= 6 7 3 2 9 2 8
n=7
k=-1 (khong co x
trong mang)
Vd07
Vd07b
Vd4: Xóa phần tử x khỏi mảng (nếu có). Ví dụ:
a= [6 7 3 2 9 2 8],n=7
x= 3 → a= [6 7 2 9 2 8], n= 6
x= 2 → a= [6 7 9 8], n= 4
x= 3
n=6 n=7
a= 6 7 3 2 9 2 8
k=2
Xóa phần tử x khỏi mảng (nếu có).
Vd08a
Xóa tất cả phần tử x khỏi mảng (nếu có).
Vd08b
Bài tập nhập môn lập trình
Phần 1: Các bài tập không dùng cấu trúc điều khiển
1. Viết chương trình nhập 2 số. In ra cho biết giá trị của số lớn.
2. Viết chương trình nhập số nguyên N, in ra cho biết góc có số đo N0 thuộc cung phần tư số
mấy của đường tròn lượng giác. Biết: góc có số đo [0..90): cung phần tư số 1, [90..180):
cung phần tư số 2, [180.. 270): cung phần tư số 3, [270..360): cung phần tư số 4.
3. Viết chương trình nhập 2 số nguyên a, b. In ra cho biết chu vi, diện tích của hình chữ nhật có
độ dài 2 cạnh là a, b.
4. Viết chương trình nhập vào 1 ký tự, in ra ký tự in hoa tương ứng.
5. Viết chương trình nhập vào 1 số nguyên, in ra ký tự tương ứng và ngược lại, nhập một ký tự,
in ra mã ASCII của ký tự đó.
Phần 2: Cấu trúc điều khiển: rẽ nhánh, lặp, hàm
1. Viết chương trình nhập vào 2 số a, b. Giải và biện luận phương trình bậc nhất ax + b = 0
2. Viết chương trình nhập vào 3 số a, b, c. Giải và biện luận phương trình trùng phương ax4 +
bx2 + c = 0
3. Viết chương trình nhập vào 3 số a, b, c. Xác định xem a, b, c có phải là độ dài 3 cạnh một
tam giác hay không. Nếu phải thì đó là tam giác gì trong các loại: tam giác vuông, tam giác
tù, tam giác nhọn.
4. Viết chương trình nhập số nguyên không âm N (N < 1000). In ra cách đọc N bằng tiếp Việt
không dấu.
5. Viết chương trình nhập 2 số nguyên d, m. In ra cho biết ngày d/m/2004 là ngày thứ mấy
trong tuần. Biết ngày 1/1/2004 là ngày thứ 5. Nếu dữ liệu nhập vào không hợp lệ, hãy thông
báo.
6. Viết chương trình nhập vào 3 số nguyên không âm d, m, y. In ra cho biết ngày d/m/y là ngày
thứ mấy trong tuần. Các dữ liệu nhập vào luôn hợp lệ, chỉ xét các năm trong hạn 1..3000.
(Nhắc lại: năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 và không chia hết cho
100).
7. Viết chương trình nhập số nguyên dương H. Dùng các ký tự * vẽ quạt 4 cánh có tâm ở giữa
màn hình. Mỗi cánh quạt là tam giác vuông cân đặc có độ rộng cạnh góc vuông là H.
Ví dụ với H = 3 ta sẽ có cánh quạt như sau ở giữa màn hình
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
8. Viết chương trình nhập số nguyên không âm N. Hãy tính và in ra giá trị của các các biểu
thức sau:
1 1 1
a. 1 + + + ... +
2 3 N
1 1 1
b. 1 + + + ... +
2! 3! N!
1 1
c. 1 − + + ... +
(− 1)
N −1
2! 3! N!
d. N!
⎧1x3x5x...xN N%2!= 0
e. N!! .Nhắc lại: N !!= ⎨
⎩2 x 4 x6 x...xN N%2 == 0
9. Viết chương trình nhập số nguyên N (kiểu char). In ra cho biết biểu diễn nhị phân của N.
10. Viết chương trình nhập số nguyên không âm N. In ra dãy Fibonaci với các số hạn F0, F1, …,
FN
11. Viết chương trình nhập số nguyên dương N. In ra màn hình cách phân tích N thành thừa số
nguyên tố.
12. Viết chương trình nhập 4 số a, b, c, d. Giải phương trình bậc 3: ax3 + bx2 + cx + d = 0 bằng
phương pháp lặp nhị phân. Sai số cho phép 0.0000001.
13. Viết chương trình nhập số nguyên dương N (N ≤ 2 tỉ), kiểm tra xem N có phải là số đối
xứng hay không. (Số đối xứng là số có giá trị không đổi nếu đọc các chữ số từ phải qua trái).
14. Viết chương trình nhập 2 số nguyên không âm K, N (K ≤ N). Tính và in ra:
N!
C NK =
K !( N − K )!
15. Viết chương trình nhập số nguyên dương N (N≤1000). In ra N số nguyên tố đầu tiên.
a c
16. Viết chương trình nhập 2 phân số và . Tính và in ra phân số tổng ở dạng phân số tối
b d
giản.
17. Viết chương trình nhập số nguyên dương N, kiểm tra xem N có phải là số hạnh phúc hay
không. (Số hạnh phúc là số có 2K chữ số và tổng K chữ số đầu tiên bằng tổng K chữ số cuối
cùng)
Phần 3: Mảng 1 chiều - Chuỗi ký tự
18. Viết chương trình nhập số nguyên dương N (N ≤ 100) thực hiện:
a. Nhập N số nguyên vào dãy a0, a1, a2, ..
b. Xuất dãy vừa nhập ra màn hình.
c. Đếm xem dãy vừa nhập có bao nhiêu số nguyên tố, in các số nguyên tố đó ra màn
hình.
d. Nhập số nguyên X, tìm vị trí xuất hiện của X trên dãy vừa nhập.
e. Nhập số nguyên Y, xóa một số có giá trị Y ra khỏi dãy vừa nhập.
f. Nhập số nguyên Z, tìm vị trí xuất hiện của số trên dãy có giá trị gần với Z nhất.
19. Viết chương trình nhập số nguyên dương N (N ≤ 100) thực hiện:
a. Nhập N số nguyên vào dãy a0, a1, a2, ..
b. Xuất dãy vừa nhập ra màn hình.
c. Kiểm tra xem dãy vừa nhập có phải là dãy tăng dần hay không.
d. Nếu dãy không tăng dần, hãy sắp xếp lại, xuất dãy ra màn hình.
e. Nhập số nguyên X, chèn X vào dãy đang có sao cho dãy vẫn được sắp xếp tăng dần,
xuất dãy kết quả ra màn hình.
20. Viết chương trình nhập số nguyên dương N (N ≤ 100) thực hiện:
a. Nhập N số nguyên vào dãy a0, a1, a2, ..
b. Tìm vị trí của số bé nhất trong dãy.
c. Tìm vị trí của số âm lớn nhất trong dãy.
d. Tìm tất cả các vị trí của dãy mà số tại đó bé hơn 2 số kề bên. Các số ở biên chỉ cần
xét với 1 số kề bên.
e. Tìm tất cả bộ ba số i, j, k thỏa ai, aj, ak là bộ 3 số pitago.
21. Viết chương trình nhập chuỗi ký S:
a. Đếm và cho biết số lượng khoảng trắng, số lượng ký số, số lượng chữ cái latin, số
lượng các ký tự khác.
b. Đếm và cho biết số lượng từ của chuỗi – các từ cách nhau bởi khoảng trắng.
c. Biến đổi chuỗi sao cho các ký tự đầu mỗi từ là ký tự in hoa, các ký tự khác in
thường.
22. Viết chương trình nhập chuỗi ký S, đếm và in cho biết số lượng của mỗi chữ cái latin trong
chuỗi (không phân biệt chữ in hoa và chữ in thường).
23. Viết chương trình nhập 3 chuỗi ký tự S, S1, S2. Hãy tìm trên chuỗi S tất cả những lần xuất
hiện của S1 và thay bằng S2.
Phần 4: Struct
24. Viết chương trình nhập thông tin của một sinh viên, xuất thông tin sinh viên vừa nhập ra
màn hình. Thông tin một sinh viên gồm: Mã sinh viên (chuỗi 8 ký tự), họ và tên sinh viên
(chuỗi 30 ký tự), giới tính (nam/nữ), địa chỉ liên hệ (chuỗi 50 ký tự), điểm 6 môn học
25. Viết chương trình quản lý một lớp học gồm tối đa 150 sinh viên, mỗi sinh viên có các thông
tin như bài trước. Chương trình phải đảm bảo một số tính năng:
a. Nhập mới một danh sách sinh viên.
b. Tìm một sinh viên trong danh sách theo mã sinh viên.
c. Thêm một sinh viên vào danh sách.
d. Hủy một sinh viên ra khỏi danh sách.
e. Xuất danh sách sinh viên ra màn hình.
f. Xuất danh sách các sinh viên còn nợ điểm (điểm < 5) của ít nhất một môn học.