Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
Một số Bài tập
thực hành
mụn kỹ thuật
lập trình
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 1
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
Chương I: Biến – biểu thức – cỏc lệnh nhập xuất
1. Nhập hai số nguyờn, tớnh tổng, hiệu, tớch, thương, đồng dư.
2. Nhập một số nguyờn, in ra màn hỡnh cỏch đọc số nguyờn đú (VD: số 1252 đọc
là: một ngàn hai trăm năm chục hai đơn vị).
3. Viết chương trỡnh tớnh giỏ trị biểu thức:
F(x) = (x
2
+e
x
+sin
2
(x))/sqrt(x
2
+1)
Chương II: cỏc cấu trỳc điều khiển
1. Viết chương trỡnh nhập vào một số nguyờn n. Kiểm tra xem n chẵn hay lẻ.
2. Viết chương trỡnh giải và biện luận phương trỡnh bậc nhất theo hai hệ số a, b
nhập từ bàn phớm.
3. Viết chương trỡnh giải và biện luận phương trỡnh bậc hai với cỏc hệ số a, b, c
nhập từ bàn phớm.
4. Viết chương trỡnh nhập vào số tiền phải trả của khỏch hàng. In ra số tiền khuyến
mói với quy định: nếu số tiền phải trả thuộc [200.000, 300.000) thỡ khuyến mói
20%. Nếu số tiền phải trả từ 300.000 trở lờn thỡ khuyến mói 30%. Cũn lại thỡ
khụng khuyến mói.
5. Viết chương trỡnh nhập vào điểm tổng kết của một học sinh và in ra xếp loại cho
học sinh đú với quy định:
- Xếp loại giỏi nếu tổng điềm từ 8.00 trở lờn.
- Xếp loại khỏ nếu tổng điểm từ 7.00 tới cận 8.00.
- Xếp loại trung bỡnh nếu tổng điểm từ 5.00 tới cận 7.00.
- Cũn lại, xếp loại yếu.
6. Viết chương trỡnh nhập vào một thỏng bất kỳ, sau đú in ra số ngày cú trong
thỏng (quy định thỏng 2 cú 28 ngày).
7. Viết chương trỡnh tớnh n!
8. Nhập vào một số nguyờn, kiểm tra xem một số vừa nhập cú phải là số nguyờn tố
khụng, in kết luận ra màn hỡnh.
9. Viết chương trỡnh nhập vào một số nguyờn n, sau đú tớnh giỏ trị biểu thức:
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 2
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
S =
n
1
3
1
2
1
1 ++++
10.Viết chương trỡnh nhập vào một số nguyờn n, sau đú tớnh giỏ trị biểu thức
F =
+
+++++
lÎ n nÕu
ch½n n nÕu
1
2
1
2
1
2
1
2
1
1
2
32
n
n
11.Viết chương trỡnh nhập vào một số thực x và số nguyờn n, sau đú tớnh giỏ trị
biểu thức:
S =
ch½n n nÕu
lÎ n nÕu
++++
−
0
3
3
3
12
32
n
n
xxx
x
12.Viết chương trỡnh nhập vào một số nguyờn n trong khoảng [10, 20] (nếu số
nhập vào khụng thuộc khoảng đú thỡ yờu cầu nhập lại tới khi thoả món). Sau đú
tớnh tổng cỏc số liờn tiếp từ 1 tới n.
13. Viết chương trỡnh nhập vào một số nguyờn dương n, sau đú tớnh tổng cỏc giỏ
trị chẵn, lẻ thuộc đoạn [1, n].
14.Viết chương trỡnh nhập vào cỏc số nguyờn dương n, m, sau đú in ra:
- Tổng cỏc số chẵn dương trong khoảng [- n, m].
- Tổng cỏc số chẵn õm trong khoảng [- n, m].
- Tổng cỏc số lẻ dương trong khoảng [- n, m].
- Tổng cỏc số lẻ õm trong khoảng [- n, m].
15.Viết chương trỡnh nhập vào một số nguyờn n, sau đú tớnh tổng cỏc số nguyờn tố
thuộc đoạn [1 n]. Cho biết cú bao nhiờu số nguyờn tố thuộc đoạn đú.
16. Dựng while (sau đú viết lại, dựng do/ while) để viết chương trỡnh in ra số là luỹ
thừa 2 bộ nhất lớn hơn 1000.
17.Cho dóy số x[] = { 12.3, -45.4, 12, 15, 10.1, 12.5}. Viết chương trỡnh đảo
ngược dóy số trờn.
18. Viết chương trỡnh tỡm số nguyờn dương n nhỏ nhất thoả món: 1 + 2 + 3 + … +
n > 1000.
19. Để tớnh căn bậc hai của một số dương a, ta sử dụng cụng thức lặp sau:
x(0) = a;
x(n+1) = (x(n) * x(n) + a)/ (2* x(n)) với n >=0.
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 3
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
Quỏ trỡnh lặp kết thỳc khi abs((a(n+1) – x(n))/x(n)) < ε.
và khi đú x(n+1) được xem là giỏ trị gần đỳng của sqrt(a).
Viết chương trỡnh tớnh căn bậc hai của a với độ chớnh xỏc ε = 0.00001.
20. Lập trỡnh để tớnh sin(x) với độ chớnh xỏc ε = 0.00001 theo cụng thức :
sin(x) = x – x
3
/3! + x
5
/ 5! + …+ (-1)
n
x
(2n+1)
/ (2n+1)!.
21. Lập trỡnh để tớnh tổ hợp chập m của n theo cụng thức:
C(m, n) = (n(n-1)…(n-m+1))/ m!.
Chương III: kỹ thuật lập trỡnh đơn thể
1. Viết hàm kiểm tra xem một số nguyờn n cú phải là số nguyờn tố khụng. Sau đú,
trong chương trỡnh chớnh, nhập vào một số nguyờn n, kiểm tra tớnh nguyờn tố
của số n và thụng bỏo ra màn hỡnh.
2. Viết hàm tớnh n! sau đú, trong chương trỡnh chớnh, nhập vào một số nguyờn n
và tớnh, in ra kết quả của biểu thức:
S =
)!1(
1!
+
+
n
n
3. Viết hàm tớnh giỏ trị biểu thức F (trong bài số 10 chương II) với đối vào là n.
Sau đú, trong chương trỡnh chớnh, nhập vào hai số a, b, tớnh và in ra màn hỡnh
kết quả của biểu thức:
S =
)(
)()(
baF
bFaF
−
−
4. Viết hàm sắp xếp một chuỗi ký tự (từ A->Z). Sau đú, trong chương trỡnh chớnh,
nhập vào một xõu ký tự bất kỳ, in xõu đó được sắp lờn màn hỡnh.
5. Viết chương trỡnh giải phương trỡnh trựng phương : ax
4
+ bx
2
+ c = 0.
Kỹ thuật Đệ quy
6. USCLN của hai số a, b được định nghĩa như sau:
USCLN(a, b) = a nếu b = 0
= USCLN(b, a%b) nếu b <> 0
Viết hàm đệ quy tỡm USCLN của hai số nguyờn a, b. Trong chương trỡnh
chớnh, nhập vào hai số nguyờn a, b. Tỡm và in USCLN của hai số đú lờn màn
hỡnh.
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 4
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
7. USCLN của hai số a, b được định nghĩa như sau:
USCLN(a, b) = a nếu a = b
= USCLN(a-b, b) nếu a > b
= USCLN(a, b-a) nếu a < b
Viết hàm đệ quy tỡm USCLN của hai số nguyờn a, b. Trong chương trỡnh
chớnh, nhập vào hai số nguyờn a, b. Tỡm và in USCLN của hai số đú lờn màn
hỡnh.
8. Viết hàm tỡm kiếm đệ quy trờn một dóy số nguyờn đó được sắp.
9. Cỏc số Fibonacci F[i] được định nghĩa đệ quy như sau:
F[0] =1; F[1] =1;
F[i] = F[i-1] + F[i-2] (với i > 1);
(VD: 1, 1, 2, 3, 5, 8, 13…)
Viết hàm đệ quy tỡm số Fibonacci thứ n trong dóy.
10.Viết hàm đệ quy tớnh n!. (n ∈ Z
+
)
11.Viết hàm đệ quy tớnh f(x, n) = x
n
. (x∈R, n ∈ Z). Viết chương trỡnh chớnh sử
dụng hàm trờn để nhập vào số nguyờn n, số thực x từ bàn phớm. Tớnh và in ra
màn hỡnh giỏ trị của f(x, n).
12. Viết hàm đệ quy tớnh f(x, n) = n!x
n
. (x∈R, n ∈ Z). Viết chương trỡnh chớnh sử
dụng hàm trờn để nhập vào số nguyờn n, số thực x từ bàn phớm. Tớnh và in ra
màn hỡnh giỏ trị của f(x, n).
13.Viết hàm đệ quy để đếm số chữ số cú trong một số nguyờn bất bỳ (Vớ dụ số
1263 cú 4 chữ số…). Viết chương trỡnh chớnh sử dụng hàm trờn để cho phộp
nhập vào một số nguyờn bất kỳ. In ra màn hỡnh số chữ số của số nguyờn vừa
nhập.
14. Dóy Catalan được định nghĩa đệ quy như sau:
C
1
= 1;
C
n
= Σ C
i
* C
n-i
∀ n > 1.
Vớ dụ: { 1, 1, 2, 5,…}
Hóy xõy dựng hàm đệ quy tớnh số Catalan thứ n bất kỳ (n ∈ Z
+
). Viết
chương trỡnh chớnh sử dụng hàm trờn để tớnh số Catalan thứ n bất kỳ với n nhập từ
bàn phớm (n ∈ Z
+
).
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 5
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
Chương IV: kỹ thuật lập trỡnh dựng mảng.
1. Cho hai vector x(x
1
, x
2
…x
n
) và y(y
1
, y
2
…y
n).
Viết chương trỡnh in ra Tớch vụ
hướng của hai vector trờn.
2. Cho hai mảng a và b cú cỏc phần tử đều đó được sắp tăng. Lập chương trỡnh
trộn hai mảng trờn để thu được một mảng thứ 3 cũng sắp theo thứ tự tăng bằng
hai phương phỏp.
3. Viết chương trỡnh nhập vào một mảng n số nguyờn, sắp xếp mảng theo chiều
tăng dần và in kết quả lờn màn hỡnh bằng cỏc phương phỏp:
- Sắp xếp nổi bọt.
- Sắp xếp chọn.
- Sắp xếp chốn.
4. Viết chương trỡnh nhập vào một mảng n số nguyờn, tớnh tổng cỏc phần tử chẵn,
cỏc phần tử lẻ, cỏc phần tử chia hết cho 3 và in kết quả ra màn hỡnh.
5. Viết chương trỡnh nhập vào một dóy số thực, tỡm phần tử lớn nhất (tương tự,
tỡm phần tử nhỏ nhất) của dóy và in kết quả ra màn hỡnh.
6. Viết chương trỡnh nhập vào một dóy số nguyờn. Tớnh tổng của cỏc số nguyờn
tố trong dóy và in kết quả ra màn hỡnh.
7. Viết chương trỡnh nhập vào một dóy số nguyờn và một số nguyờn c. Đếm số lần
xuất hiện và vị trớ xuất hiện của c trong dóy. In cỏc kết quả ra màn hỡnh.
8. Viết chương trỡnh nhập vào một dóy n số nguyờn. Tớnh trung bỡnh cộng của
dóy và in kết quả tớnh được ra màn hỡnh.
9. Một dóy số a gọi là được sắp tăng nếu a[i] <= a[i+1] với mọi i;
Dóy gọi là được sắp giảm nếu a[i] >= a[i+1] với mọi i;
Dóy gọi là được sắp tăng ngặt nếu a[i] < a[i+1] với mọi i;
Dóy gọi là được sắp giảm ngặt nếu a[i] > a[i+1] với mọi i;
Viết chương trỡnh nhập một dóy n số thực, kiểm tra xem dóy đó được sắp hay
chưa. Nếu đó được sắp thỡ sắp theo trật tự nào (tăng, tăng ngặt, giảm, giảm ngặt?).
Nếu chưa thỡ sắp xếp dóy theo chiều tăng dần. In cỏc kết quả lờn màn hỡnh.
10.Viết hàm tỡm kiếm lặp trờn một dóy số nguyờn đó được sắp với độ phức tạp tốt
hơn O(n).
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 6
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
11.Viết chương trỡnh nhập vào một ma trận m x n số nguyờn. Tỡm cỏc phần tử lớn
nhất và bộ nhất trờn cỏc dũng (tương tự cỏc cột) của ma trận. (sử dụng for sau
đú dựng while, do/ while).
12.Viết chương trỡnh tỡm phần tử õm đầu tiờn trong ma trận (theo chiều từ trỏi qua
phải, từ trờn xuống dưới).
13.Viết chương trỡnh nhập vào một ma trận m x n số nguyờn. Tỡm phần tử lớn
nhất (tương tự tỡm phần tử nhỏ nhất) của ma trận vừa nhập. In kết quả ra màn
hỡnh. Cú thể sửa lại bài để tỡm phần tử lớn nhất (nhở nhất) trờn cỏc cột (cỏc
dũng) được khụng?
14.Viết chương trỡnh nhập vào hai ma trõn A, B cú n hàng, m cột. Tớnh ma trận C
= A + B và in kết quả ra màn hỡnh.
15.Viết chương trỡnh nhập vào hai ma trận A, B, tớnh và in ra màn hỡnh tớch của
hai ma trận đú.
16.Viết chương trỡnh nhập vào một ma trận A cú n dũng, m cột. In ra màn hỡnh ma
trận chuyển vị của A. (A’ được gọi là ma trận chuyển vị của A nếu A’[i, j] = A[j,
i] với mọi i, j).
17. Ma trận A được gọi là đối xứng qua đường chộo chớnh nếu A[i, j] = A[j, i] với
mọi i khỏc j. Viết chương trỡnh nhập vào một ma trận A, kiểm tra xem A cú đối
xứng qua đường chộo chớnh khụng. In kết luận lờn màn hỡnh.
Chương V: Kỹ thuật lập trỡnh dựng con trỏ
Tất cả cỏc bài tập về mảng ở trờn đều cú thể sửa lại để dựng con trỏ thay vỡ
dựng mảng. Ngoài ra hóy cài đặt thờm cỏc bài tập sau:
1. Viết chương trỡnh nhập vào một mảng a gồm n phần tử nguyờn. Sắp xếp
mảng theo chiều giảm dần (lưu ý sử dụng tờn mảng như con trỏ và sử dụng
con trỏ).
2. Hóy dựng một vũng for để nhập vào một ma trận vuụng cấp n với cỏc phần
tử thực và tỡm phần tử Max của ma trận này.
3. Viết hàm hoỏn vị hai biến thực a, b bằng cỏch sử dụng con trỏ (đối vào là hai
con trỏ). Viết chương trỡnh chớnh nhập hai số thực a, b. Sử dụng hàm trờn để
đổi chỗ a và b.
4. Viết hàm giải hệ phương trỡnh bậc nhất với sỏu đối vào là a, b, c, d, e, f và 2
đối ra là x và y.
5. Viết hàm tớnh giỏ trị đa thức:
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 7
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
f(x) = a
0
x
n
+ … + a
n-1
x + a
n
. với đối vào là biến nguyờn n và mảng thực a.
6. Viết hàm cộng hai ma trận vuụng a và b cấp n (sử dụng con trỏ).
7. Viết chương trỡnh tớnh tớch phõn của f(x) trờn đoạn [a, b] bằng cụng thức
hỡnh thang. Theo đú, tớch phõn của f(x) trờn [a, b] bằng: h * s. Trong đú:
h là độ dài khoảng phõn hoạch đoạn [a, b] thành n khoảng.
s là tổng tất cả cỏc f(a+i*h) với i từ 1 tới n.
Sử dụng hàm trờn để tớnh tớch phõn trong đoạn [-1, 4] của:
f(x) = (e
x
-2sin(x
2
))/ (1+x
4
). (nghiờn cứu cỏch đưa con trỏ vào giải quyết bài
toỏn).
//================Tham khảo code một số hàm đệ quy========
#include "iostream.h"
#include "conio.h"
//hàm tớnh n giai thừa =======================================
long gt(int n)
{
if (n==0)
return 1;
else
return n*gt(n-1);
}
//hàm tỡm số Fibonacci thứ n===========================
long Fibo(int n)
{
if (n<=1)
return 1;
else
return Fibo(n-1)+ Fibo(n-2);
}
//hàm USCLN của a va b===============================
int USCLN(int a, int b)
{
if (b==0)
return a;
else
return USCLN(b, a%b);
}
//Hàm main=========================================
void main()
{ int n;
cout<<"nhap n ";
cin>> n;
long S = gt(n);
cout<<"n gt "<<S;
getch();
//=====================================
long T = Fibo(n);
cout<<"\n so fibonaci thu "<<n<<" la "<<T;
getch();
//=====================================
int a, b;
cout<<"nhap a ";
cin>> a;
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 8
Bµi tËp thùc hµnh M«n Kü thuËt lËp tr×nh
cout<<" nhap b ";
cin>>b;
cout<<"\n USCLN cua "<<a<<" va "<<b<<" la "<<USCLN(a,b);
getch();
}
Biªn so¹n: NguyÔn M¹nh Cêng Trang: 9