BÀI TẬP TIN HỌC ĐẠI CƯƠNG
PHẦN NGƠN NGỮ LẬP TRÌNH C
TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
KHOA CÔNG NGHỆ THÔNG TIN
A. NHẬP XUẤT DỮ LIỆU ................................................................................................................... 1
B. LƯU ĐỒ - THUẬT TOÁN ............................................................................................................... 2
C. CẤU TRÚC RẼ NHÁNH .................................................................................................................. 3
D. CẤU TRÚC LẶP ............................................................................................................................... 5
E. HÀM – ĐỆ QUY ................................................................................................................................ 9
F. MẢNG MỘT CHIỀU ....................................................................................................................... 12
10/2011
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
A. NHẬP XUẤT DỮ LIỆU
Viết các chương trình:
1. Tính tổng, hiệu, tích và thương của hai số nguyên dương.
Nhập a,
Tổng:
Hiệu:
Tích:
Thương:
b: 6 4
6 + 4 =
6 – 4 =
6 x 4 =
6 / 4 =
10
2
24
1.50
2. Tính căn bậc 2 của một số thực.
Nhập số thực: 7
Căn bậc 2 của 7 là 2.646
3. Hiển thị mã ASCII của một kí tự.
Nhập ký tự: A
Mã ASCII của ký tự A là: 65
4. Hiển thị ký tự khi biết mã ASCII của nó.
Nhập mã ASCII của ký tự: 97
Ký tự có mã ASCII 97 là: a
5. Tính trung bình cộng của 3 số ngun.
Nhập a, b, c: 3 4 7
Trung bình cộng của 3, 4, và 7 là: 4.67
6. Tính khoảng cách giữa 2 điểm trên mặt phẳng.
Nhập tọa độ điểm A: 2 3
Nhập tọa độ điểm B: 4 6
Khoảng cách giữa A(2,3) và B(4,6) là 3.6
7. Tính chu vi và diện tích hình trịn khi biết bán kính của nó (sử dụng : PI = 3.1416)
Nhập bán kính (theo mét): 4
Đường trịn bán kính 4m có chu vi là 25.13 met
Hình trịn bán kính 4m có diện tích là 50.27 met vuong
8. Tính chu vi và diện tích hình chữ nhật khi biết chiều dài và chiều rộng của nó.
Nhập chiều dài, chiều rộng: 4 6
Chu vi và diện tích của hình chữ nhật 4x6 lần lượt la: 20 24
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| NHẬP XUẤT DỮ LIỆU
1
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
9. * Tính tổng, hiệu, tích, thương của hai phân số (tử và mẫu là các số nguyên dương).
Nhập phân số
Nhập phân số
2/3 cộng 3/4
2/3 trừ 3/4
2/3 nhân 3/4
2/3 chia 3/4
thứ 1 (tử, mẫu): 2 3
thứ 2 (tử, mẫu): 3 4
= 1.42
= -0.08
= 0.50
= 0.89
B. LƯU ĐỒ - THUẬT TOÁN
Thiết kế thuật toán bằng sơ đồ khối:
1. Xác định vị trí (thuộc góc phần tư thứ mấy) của một góc.
Nhập vào một góc (theo độ): 95
Thuộc góc phần tư thứ 2
2. Xác định số ngày của một tháng nào đó trong một năm không phải năm nhuận.
Nhập vào một tháng: 10
Tháng 10 có 31 ngày!
3. Kiểm tra xem 3 số thực a, b, c có thể là độ dài 3 cạnh của một tam giác không.
Nhập vào 3 số thực:
- a = 3
- b = 4
- c = 5
Đây có thể là độ dài 3 cạnh của một tam giác.
4. Tìm ước chung lớn nhất của hai số nguyên dương.
Nhập a: 20
Nhập b: 15
UCLN(a,b): 5
5. Tính X(n) = 1 + 2 + 3 + … + n
Nhập n (n>0): 3
X(3) = 6
6. Tính Y(n) = 1 × 2 × 3 × … × n
Nhập n (n>0): 4
Y(3) = 24
7. Tính Z(n) = 2 + 4 + 6 + … + 2n
Nhập n (n>0): 3
Z(3) = 12
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| LƯU ĐỒ - THUẬT TOÁN
2
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
8. Tính A(n) = 1 × 3 × 5 × … × (2n+1)
Nhập n (n>0): 3
A(3) = 105
9. Tính C(n) = 12 + 22 + 32 + … + n2
Nhập n (n>0): 3
C(3) = 14
10. Tính B(n) = 1 – 2 + 3 – 4 + … + (-1)n+1n
Nhập n (n>0): 3
B(3) = 2
11. * Tính D(n) = 1 + (1+2) + (1+2+3) + … + (1+2+3+…+n), với n > 0
Nhập n (n>0): 3
D(3) = 10
12. * Tính trung bình cộng của n số thực được nhập từ bàn phím.
Nhập một số (nhập 0
Nhập một số (nhập 0
Nhập một số (nhập 0
Nhập một số (nhập 0
Trung bình cộng của
để dừng):
để dừng):
để dừng):
để dừng):
3 số thực
3
4
5
0
trên là: 4
C. CẤU TRÚC RẼ NHÁNH
Viết chương trình:
1. Xác định xem một số nguyên là chẵn hay lẻ.
Nhập số nguyên n: 8
8 là một số chẵn
2. Xác định học lực dựa vào điểm trung bình của sinh viên, biết:
Điểm trung bình
[0, 4)
[4, 5)
[5, 6.5)
[6.5, 8)
[8, 9)
[9, 10]
Học lực
Kém
Yếu
Trung bình
Khá
Giỏi
Xuất sắc
Nhập điểm trung bình: 8
Học lực của sinh viên này là Giỏi
3. Xác định số có giá trị lớn hơn trong hai số thực a, b.
Nhập số thực thứ nhất: 12.3
Nhập số thực thứ hai: 3.7
Max(12.30, 3.70) = 12.30
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| CẤU TRÚC RẼ NHÁNH
3
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
4. Xác định số có giá trị lớn nhất và nhỏ nhất trong ba số nguyên a, b, c.
Nhập số thứ nhất: 2
Nhập số thứ hai: 5
Nhập số thứ ba:
4
Min(2, 5, 4) = 2
Max(2, 5, 4) = 5
5. Giải và biện luận phương trình bậc nhất: ax + b = 0 (a, b
).
Nhập a, b: 1.5 3
Phương trình có 1 nghiệm: x = -2
6. Giải và biện luận phương trình bậc hai: ax2 + bx + c = 0 (a, b, c
)
Nhập a, b, c: 1 -3 2
Phương trình có 2 nghiệm phân biệt: x1 = 1, x2 = 2
7. Hiển thị một số tự nhiên bất kì từ 0 đến 9 dưới dạng chữ.
Nhập số (0..9): 9
Số 9 đọc là chín
8. Nhập vào 3 số tự nhiên a, b và c. Xác định xem đây có thể là độ dài 3 cạnh của 1 tam giác hay
khơng. Nếu có thì tính diện tích tam giác này đồng thời kiểm tra xem đây có phải là tam giác
đặc biệt hay không (cân, đều, hoặc vuông).
Nhập a, b, c: 3 4 5
Đây là 3 cạnh của 1 tam giác vng có diện tích 6
Nhập a, b, c: 3 4 6
Đây là 3 cạnh của 1 tam giác có diện tích 5.33
9. Xác định chữ số lớn nhất của một số nguyên gồm ba chữ số.
Nhập số nguyên (gồm 3 chữ số): 362
Chữ số lớn nhất là 6
10. Tính tổng các chữ số của một số nguyên gồm ba chữ số.
Nhập số nguyên (gồm 3 chữ số): 362
Tổng các chữ số là 11
11. Xác định số ngày của một tháng.
Nhập vào tháng, năm: 10 2011
Tháng 10/2011 có 31 ngày!
12. Tính tiền cước Taxi. Biết rằng: 1km đầu tiên là 13000đ, mỗi km tiếp theo là 12000đ, nếu lớn
hơn 30km thì mỗi km thêm sẽ là 11000đ.
Nhập số km: 31
Tiền cước: 372000 đồng
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| CẤU TRÚC RẼ NHÁNH
4
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
13. Nhập vào hai số tự nhiên bất kì tương ứng là chiều rộng và chiều dài của một hình chữ nhật.
Cho biết đây là hình vng, hình chữ nhật đứng hay hình chữ nhật nằm.
Nhập vào chiều dài, chiều rộng: 4 6
Đây là hình chữ nhật đứng.
14. * Tính cước sử dụng ADSL trong một tháng khi biết dung lượng sử dụng, biết:
Dung lượng
500 MB đầu
500 MB tiếp theo
500 MB tiếp theo
Các MB tiếp theo
Giá của 1 MB
50 đồng
40 đồng
30 đồng
20 đồng
Nếu một thuê bao sử dụng quá nhiều thì tối đa chỉ lấy 299000 đồng.
Nhập số MB sử dụng của thuê bao: 810
Tiền cước: 37400 đồng
15. * Xác thời điểm tiếp theo (sau 1 giây) của một thời điểm (giả sử thời điểm vào là hợp lệ)
Nhập vào giờ, phút, giây: 01 59 59
01:59:59 sau 1 giây sẽ là 02:00:00
16. * Xác định ngày tiếp theo của một ngày nào đó (giả sử ngày nhập vào là hợp lệ)
Nhập vào ngày, tháng, năm: 31 10 2011
Ngày tiếp theo của ngày 31/10/2011 là ngày 01/11/2011
D. CẤU TRÚC LẶP
Viết chương trình:
1. Tính n!, với n là một số ngun dương.
Nhập n: 4
4! = 24
2. Tính n!, với n là một số nguyên dương.
Nhập n: 4
4! = 1*2*3*4 = 24
3. Tìm tất cả các ước số của một số nguyên dương.
Nhập số nguyên dương: 6
Các ước số của 6 là: 1 2 3 6
4. Tìm tất cả các phương án kết hợp 3 loại giấy bạc 100đ, 200đ, 500đ với nhau để cho ra số tiền
10000đ.
Phương án
1: 0 tờ 100đ, 5 tờ 200đ, 18 tờ 500đ
Phương án
2: 0 tờ 100đ, 10 tờ 200đ, 16 tờ 500đ
…
Phương án 537: 98 tờ 100đ, 1 tờ 200đ, 0 tờ 500đ
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| CẤU TRÚC LẶP
5
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
5. Trả lời câu hỏi sau bằng cách duyệt tất cả các cách có thể để tìm kết quả:
u nhau cau sáu bổ ba
Ghét nhau cau sáu bổ ra làm mười
Mỗi người một miếng trăm người
Có mười bảy quả hỏi người ghét yêu.
Đáp án: có .. người thương và .. người ghét
6. Tìm phương án tối ưu (số tờ tiền là ít nhất) kết hợp 3 loại giấy bạc 100đ, 200đ, 500đ với
nhau để cho ra số tiền 10000đ.
Phương án tối ưu: 1 tờ 100đ, 2 tờ 200đ, 19 tờ 500đ
7. Kiểm tra xem một số nguyên dương n có là số nguyên tố hay không?
Nhập số nguyên dương: 23
23 là một số nguyên tố
8. Kiểm tra xem một số nguyên n ≥ 2 có phải là số nguyên tố hay không? Nếu không phải là số
nguyên tố (hợp số) thì đưa ra một ví dụ (tích của a*b trong đó a, b khác 1 và n) để chứng
minh.
Nhập số nguyên dương: 23
23 là một số nguyên tố
Nhập số tự nhiên: 15
15 là hợp số vì 15 = 3*5
9. Tìm các số nguyên tố nhỏ hơn một số nguyên dương n cho trước.
Nhập số nguyên dương: 11
Các số nguyên tố nhỏ hơn 9 là: 2 3 5 7
10. Kiểm tra xem một số nguyên dương n có phải là số chính phương khơng?
Nhập số ngun dương: 14
14 khơng là một số chính phương
Nhập số ngun dương: 25
25 là mơt số chính phương vì 25 = 5*5
11. Kiểm tra xem một số ngun dương n có phải là số hồn hảo hay khơng? (Số hồn hảo là số
có tổng tất cả các ước số bằng hai lần chính nó).
Nhập số ngun dương: 6
6 là một số hoàn hảo
12. Đếm xem số tự nhiên n có bao nhiêu chữ số.
Nhập số tự nhiên: 1420
Số chữ số của 1420 là 4
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| CẤU TRÚC LẶP
6
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
13. Hiển thị các chữ số của một số tự nhiên n theo thứ tự từ phải sang trái.
Nhập số tự nhiên: 1420
Các chữ số của 1420 lần lượt là 0 2 4 1
14. Tính tổng của các chữ số của một số tự nhiên n.
Nhập số tự nhiên: 1420
Tổng các chữ số của 1420 là 7
15. Tìm chữ số lớn nhất của một số tự nhiên n.
Nhập số tự nhiên: 1420
Chữ số lớn nhất của 1420 là 4
16. Kiểm tra xem một số nguyên dương n có phải là số Amstrong hay không? (Một số
được gọi là số Amstrong nếu
).
Nhập số nguyên dương: 153
153 là một số Amstrong
17. Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của hai số nguyên dương a, b.
Nhập hai số nguyên dương: 6 9
Ước số chung lớn nhất của 6 và 9 là 3
Bội số chung nhỏ nhất của 6 và 9 là 18
18. Đọc một số tự nhiên.
Nhập số tự nhiên: 1410
Đọc là: một bốn một không
19. Lấy ra chữ số ở vị trí nào đó (tính từ phải sang trái) của một số tự nhiên.
Nhập số tự nhiên: 1410
Bạn muốn lấy chữ số ở vị trí nào thứ:3
Chữ số ở vị trí thứ 3 (từ phải sang trái) của số 1410 là : 4
20. Lấy ra chữ số ở vị trí nào đó (tính từ trái sang phải) của một số tự nhiên.
Nhập số tự nhiên: 1410
Bạn muốn lấy chữ số ở vị trí nào thứ:3
Chữ số ở vị trí thứ 3 (từ trái sang phải) của số 1410 là : 1
21. Liệt kê các số hoàn hảo nhỏ hơn 9000. Số hồn hảo là số có tổng các ước số của nó (khơng kể
nó) bằng chính nó. Ví dụ: số 6 là số hồn hảo vì tổng các ước số là 1+2+3=6.
Các số hoàn hảo nhỏ hơn 9000 là: 6 28 496 8128
22. Liệt kê tất cả các số có 3 chữ số sao cho tổng lập phương của các chữ số bằng chính số đó.
153 370 371 407
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| CẤU TRÚC LẶP
7
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
23. In ra bảng cửu chương từ 5 đến 9.
5
5
5
5
5
5
5
5
5
x
x
x
x
x
x
x
x
x
1
2
3
4
5
6
7
8
9
=
=
=
=
=
=
=
=
=
5
10
15
20
25
30
35
40
45
|
|
|
|
|
|
|
|
|
6
6
6
6
6
6
6
6
6
x
x
x
x
x
x
x
x
x
1
2
3
4
5
6
7
8
9
=
=
=
=
=
=
=
=
=
6
12
18
24
30
36
42
48
54
|
|
|
|
|
|
|
|
|
7
7
7
7
7
7
7
7
7
x
x
x
x
x
x
x
x
x
1
2
3
4
5
6
7
8
9
=
=
=
=
=
=
=
=
=
7
14
21
28
35
42
49
56
63
|
|
|
|
|
|
|
|
|
8
8
8
8
8
8
8
8
8
x
x
x
x
x
x
x
x
x
1
2
3
4
5
6
7
8
9
=
=
=
=
=
=
=
=
=
8
16
24
32
40
48
56
64
72
|
|
|
|
|
|
|
|
|
9
9
9
9
9
9
9
9
9
x
x
x
x
x
x
x
x
x
1
2
3
4
5
6
7
8
9
=
=
=
=
=
=
=
=
=
9
18
27
36
45
54
63
72
81
|
|
|
|
|
|
|
|
|
24. Vẽ hình chữ nhật đặc kích thước m×n bằng các dấu *.
Nhập m,
* * * *
* * * *
* * * *
* * * *
n: 4 5
*
*
*
*
25. Vẽ hình chữ nhật rỗng kích thước m×n.
Nhập m,
* * * *
*
*
* * * *
n: 4 5
*
*
*
*
26. Vẽ tam giác vuông cân đặc có độ dài của cạnh là a.
Nhập độ dài của cạnh: 4
*
* *
* * *
* * * *
27. Vẽ tam giác cân có chiều cao h.
Nhập chiều cao tam giác: 4
*
* * *
* * * * *
* * * * * * *
28. Vẽ tam giác cân rỗng có chiều cao h.
Nhập chiều cao tam giác: 4
*
*
*
*
*
* * * * * * *
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| CẤU TRÚC LẶP
8
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
29. * Liệt kê tất cả các số Fibonacci nhỏ hơn hoặc bằng số tự nhiên n. Dãy số Fibonacci {
được định nghĩa như sau:
}
{
Nhập n: 20
1 1 2 3 5 8 13
30. * Tính
với độ chính xác 0.01 ( tính theo độ).
Biết:
với
tính theo radian.
Nhập góc (theo độ): 30
sin(30) = 0.5
31. * Tính
với độ chính xác 0.01 ( tính theo độ).
Biết:
với
tính theo radian.
Nhập góc (theo độ): 30
cos(60) = 0.5
32. * Tính π với độ chính xác đến n chữ số sau dấu chấm thập phân,
biết:
.
Độ chính xác (số chữ số sau dấu chấm thập phân): 3
PI = 3.142
Độ chính xác (số chữ số sau dấu chấm thập phân): 4
PI = 3.1416
E. HÀM – ĐỆ QUY
Viết chương trình (có sử dụng hàm):
1. Tìm số lớn nhất trong 3 số thực.
Nhập 3 số thực: 1.3 7.4 5
Số lớn nhất là: 7.4
Gợi ý: xây dựng hàm có 3 tham số là kiểu số thực (float hoặc double), giá trị trả về của hàm là kiểu số thực (float
hoặc double).
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| HÀM – ĐỆ QUY
9
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
2. Kiểm tra năm nhuận. Chương trình kết thúc khi nhấn phím ESC.
Nhập vào một năm: 1993
Đây khơng phải là một năm nhuận.
Nhấn phím ESC để thốt, phím bất kỳ để tiếp tục... (giả sử nhấn ENTER)
Nhập vào một năm: 1994
Đây là một năm nhuận.
Nhấn phím ESC để thốt, phím bất kỳ để tiếp tục... (giả sử nhấn ESC)
Chú ý: Năm nhuận là năm:
Chia hết cho 4 và không chia hết cho 100, hoặc
Chia hết cho 400
Gợi ý:
Sử dụng hàm getch() để đọc ký tự khi hỏi có tiếp tục khơng.
Mã ASCII của ESC là 27.
Sử dụng cấu trúc do..while để lặp.
3. Kiểm tra số ngun dương có phải là ngun tố khơng ? Chương trình kết thúc khi nhập vào
số khơng.
Nhập vào một số nguyên dương (0 để dừng): 6
--> 6 không phải là một số ngun tốt vì có một ước số là 2.
Nhập vào một số nguyên dương (0 để dừng): 13
--> 13 là một số nguyên tố.
Nhập vào một số nguyên dương (0 để dừng): 0
Gợi ý: Viết một hàm để kiểm tra SNT (có 1 đối số là số nguyên cần kiểm tra, giá trị trả về có kiểu int: =1 nếu là
SNT, =0 nếu khơng là SNT) sau đó sử dụng cấu trúc do..while để lặp. Trong mỗi vòng lặp, trước tiên nhập số
nguyên x sau đó có gọi hàm kiểm tra SNT ở trên.
4. Tìm các số nguyên tố thuộc đoạn [a,b], với a, b là hai số nguyên dương cho
trước và a < b.
Nhập đoạn [a,b]: 10 20
Các số nguyên tố trong đoạn [10,20] là: 11, 13, 17, 19
Có tất cả 4 số.
Gợi ý: Duyệt các số nguyên từ a đến b. Với mỗi số nguyên, gọi hàm kiểm tra SNT. Nếu là SNT thì xuất ra màn hình
đồng thời « đếm ». Để « đếm » số SNT tìm được, cần một biến kiểu nguyên, ban đầu khởi tạo =0, mỗi lần « đếm » chỉ
đơn giản tăng biến này lên 1.
5. Tính an với n là số tự nhiên theo 2 cách đệ quy và khơng đệ quy.
6. Tính giai thừa của một số tự nhiên bằng 2 cách đệ quy và không đệ quy.
Nhập n: 4
4! = 24
7. Tính S = 0! + 1! + 2! + 3! + …..+ n!, với n là một số tự nhiên.
Nhập n: 4
S = 0! + 1! + 2! + 3! + 4! = 34
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| HÀM – ĐỆ QUY
10
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
Gợi ý: Có 2 cách để làm:
Sử dụng hàm tính giai thừa ở trên. Cách này khơng tối ưu vì khi tính (k+1)! khơng tận dụng k! đã tính trước đó.
Giả sử đã tính xong S = 1! + 2! + … + k! và cần phải tính tiếp (k+1)! + (k+2)! + … + n! để bổ sung vào S. Để
tính tiếp (k+1)! và cộng dồn vào S mà khơng phải tính lại từ đầu (nghĩa là (k+1)! = 1 * 2 * … * (k+1)) thì cần
tạo một biến gt để lưu giá trị giai thừa đang tính (gt = k!). Cứ mỗi lần tính (k+1)! để cộng dồn vào S thì gán lại
gt = gt * (k+1) và S = S + gt.
8. Tính Cnk với n, k là các số nguyên dương và k
n.
Nhập n, k: 5 3
C(5,3) = 10
9. Tìm ước số chung lớn nhất của hai số nguyên dương.
Nhập a, b: 8 12
UCLN(8,12) = 4
10. Tìm bội số chung nhỏ nhất của hai số nguyên dương.
Nhập a, b: 4 6
UCLN(4,6) = 12
11. Tìm ước số chung lớn nhất của ba số nguyên dương.
Nhập a, b, c: 8 12 10
UCLN(8,12,10) = 2
12. Tìm bội số chung nhỏ nhất của ba số nguyên dương.
Nhập a, b: 4 6 5
UCLN(4,6,5) = 60
13. Tính tổng các chữ số của một số nguyên dương.
Nhập một số nguyên dương: 465
Tổng các chữ số của 465 là 15
14. Hiển thị các số tự nguyên tố nằm trong đoạn [a, b], biết số tự nguyên tố là số có tổng các chữ
số của nó là một số nguyên tố. Trên mỗi hàng chỉ ghi tối đa 20 số.
Nhập a, b: 10 99
Các số tự nguyên tố thuộc đoạn [10,99] là:
10 11 12 14 16 20 21 23 25 29 30 32 34 38 41 43 47 49 50
52 56 58 61 65 67 70 74 76 83 85 89 92 94 98
15. Tìm số đảo ngược của một số nguyên dương.
Nhập một số nguyên dương: 1340
Số đảo ngược của 1340 là số 431
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
11
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
16. Tìm số Fibonacci lớn nhất nhỏ hơn một số nguyên n cho trước theo 2 cách đệ quy và không
đệ quy.
Nhập n: 15
Fibonacci lớn nhất nhỏ hơn 15 là 13
F. MẢNG MỘT CHIỀU
Viết chương trình:
1. Nhập vào một mảng A gồm n (n ≤ 100) phần tử số nguyên, sau đó hiển thị mảng vừa nhập lên
màn hình theo các dạng sau:
a. a0 a1 a2 … an-1
Các phần tử các nhau bởi một khoảng trắng
b. a0,a1,a2,…,an-1
Các phần tử các nhau bởi dấu phẩy
c.
Các phần tử các nhau bởi một khoảng trắng và được bao bởi cặp dấu [ ]
[a0 a1 a2 … an-1 ]
a. Nhập
Nhập
Nhập
Nhập
Nhập
Nhập
Nhập
Nhập
Mảng
Mảng
Mảng
vào số phần tử của mảng: 7
phần tử thứ 1: 1
phần tử thứ 2: 2
phần tử thứ 3: 8
phần tử thứ 4: 4
phần tử thứ 5: 7
phần tử thứ 6: 10
phần tử thứ 7: 9
vừa nhập là: 1 2 8 4 7 10 9
vừa nhập là: 1,2,8,4,7,10,9
vừa nhập là: [1 2 8 4 7 10 9]
2. Khởi tạo một mảng có 10 phần tử là các số ngun khác nhau từng đơi một. Tìm vị trí và giá
trị của phần tử có giá trị lớn nhất trong mảng.
Phần tử có giá trị lớn nhất trong mảng [2 5 3 -3 7 6 1 -10 5 0]
là phần tử thứ 5, có giá trị là 7.
Gợi ý: Cần 2 biến để lưu giá trị lớn nhất (vd: max) và vị trí tương ứng (vd: maxi). Khởi tạo max = giá trị phần tử đầu
tiên, maxi = 1 (tức vị trí của phần tử đầu tiên). Duyệt từ phần tử thứ 2 cho đến cuối mảng, với mỗi phần tử, nếu thấy
giá trị của nó lớn hơn max thì cập nhật max và maxi.
3. Sinh một mảng gồm n (n ≤ 50) phần tử là các số nguyên ngẫu nhiên có giá trị thuộc
[0, 127].
Nhập số phần tử: 5
Mảng ngẫu nhiên gồm 5 phần tử là: [3 7 100 97 23]
Gợi ý:
Xây dựng một hàm để tạo ngẫu nhiên 1 mảng. Hàm có 2 đối số là mảng và số phần tử của mảng. Hàm không
cần giá trị trả về (void). Để ngẫu nhiên một số nguyên, cần include stdlib.h và time.h. Trước khi sinh ngẫu
nhiên, gọi srand(time(NULL)) để khởi động bộ sinh ngẫu nhiên. Nếu khơng gọi thế này thì cứ mỗi lần chạy
chương trình sẽ chỉ ra một bộ số “ngẫu nhiên” như nhau. Mỗi lần muốn có một số ngẫu nhiên thì gọi hàm
rand(). Hàm này sẽ trả về một số nguyên ngẫu nhiên từ 0 đếm RAND_MAX.
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
12
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
Trong chương trình chính, khai báo một mảng ngun a và một biến n lưu số phần tử của mảng. Gọi hàm tạo
mảng ngẫu nhiên ở trên, sau đó xuất mảng vừa tạo ra màn hình.
4. Sinh một mảng gồm n (n ≤ 40) phần tử là các số thực ngẫu nhiên có giá trị thuộc [0, 100].
Nhập số phần tử: 5
Mảng ngẫu nhiên gồm 5 phần tử là: [3.00 7.20 95.21 97.36 23.23]
5. Sắp xếp tăng dần mảng các số ngun có kích thước n (n ≤ 50) phần tử được sinh ngẫu nhiên,
giá trị mỗi phần tử thuộc [1, 500].
Nhập số phần tử: 5
Mảng ngẫu nhiên gồm 5 phần tử là: [64 32 66 97 23]
Mảng sau khi sắp xếp là: [23 32 64 66 97]
Gợi ý:
Sử dụng hàm được tạo ở câu trên để sinh ngẫu nhiên một mảng.
Tạo một hàm để sắp xếp mảng. Hàm này nhận 2 đối số: một mảng nguyên và một số nguyên là số phần tử của
mảng. Hàm khơng có giá trị trả về.
Trong chương trình chính, khai báo một mảng nguyên a và một biến n lưu số phần tử của mảng. Gọi hàm tạo
mảng ngẫu nhiên ở trên, sau đó gọi hàm sắp xếp mảng và cuối cùng xuất mảng vừa sắp xếp màn hình.
6. Khởi tạo hai mảng A và B có kích thước lần lượt là n và m phần tử (n, m ≤ 40) chứa các số
nguyên trong phạm vi [1, 500]. Sắp xếp hai mảng này theo thứ tự tăng dần, sau đó trộn 2
mảng lại với nhau sao cho mảng nhận được là một mảng tăng dần.
Mảng ban đầu:
A: [4 7 9 2]
B: [6 8 1 3 5]
Mảng sau khi sắp xếp:
A: [2 4 7 9]
B: [1 3 5 6 8]
Trộn mảng A và B ta được: [1 2 3 4 5 6 7 8 9]
Gợi ý:
Sử dụng câu trên để sắp xếp mảng theo thứ tự tăng dần
Trộn hai mảng bằng cách: sử dụng hai biến i và j lần lượt là vị trí trong hai mảng A và B. Bạn đầu, i=j=0. Sẽ lặp
cho đến khi i=m hoặc j=n. Mỗi lần lặp sẽ bổ sung a[i] hoặc b[j] vào mảng C đồng thời tăng i hoặc j tùy theo giá
trị của a[i] và b[j] (phần tử nào nhỏ hơn thì bổ sung). Khi i=m hoặc j=n, nghĩa là có 1 mảng đã duyệt hết, thì chỉ
đơn giản duyệt các phần tử của mảng kia và bổ sung vào C.
Xuất mảng C ra màn hình.
7. Nhập vào một mảng số thực gồm n (n ≤ 30) phần tử, sau đó kiểm tra xem mảng này có đối
xứng hay không. Một mảng { }
được gọi là đối xứng nếu
.
Mảng A: [7.2 5.0 5.0 7.2]
Mảng này đối xứng
Mảng A: [1.0 3.3 3.3 2.0]
Mảng này không đối xứng
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
13
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
Gợi ý: Kiểm tra tính đối xứng bằng cách cho một biến i chạy từ 0 đến n/2, kiểm tra xem ai có bằng phần tử tương ứng
an-i hay khơng. Nếu có thì tiếp tục duyệt, ngược lại thì dừng và kết luận mảng không đối xứng. Nếu duyệt xong, nghĩa
là thỏa mãn tính đối xứng thì kết luận mảng là đối xứng.
8. Nhập vào một mảng các số nguyên gồm n (n ≤ 20) phần tử sau đó tính trung bình cộng các số
chẵn.
Nhập vào số phần tử của mảng: 4
Phần tử thứ 1: 3
Phần tử thứ 2: 2
Phần tử thứ 3: 5
Phần tử thứ 4: 8
Trung bình cộng các số chẵn là: 5.00
9. Liệt kê các phần tử có giá trị nhỏ hơn hoặc bằng x trong một mảng gồm n (n ≤ 30) phần tử số
thực được sinh ngẫu nhiên, mỗi phần tử có giá trị thuộc đoạn [0, 10].
Nhập vào số phần tử của mảng: 6
Mảng được sinh ngẫu nhiên gồm 6 phần tử là: [2.3 8.5 4.0 7.2 10.0 9.8]
Nhập vào x: 5.3
Có 2 phần tử trong mảng có giá trị nhỏ hơn hoặc bằng 5.3.
Đó là: 2.3 4.0
10. Nhập vào một mảng các số thực gồm n (n ≤ 100) phần tử và một số nguyên k. Xóa phần tử
thứ k trong mảng.
Nhập
Phần
Phần
Phần
Phần
Nhập
Mảng
vào số phần tử của mảng: 4
tử thứ 1: 3.2
tử thứ 2: 2.3
tử thứ 3: 5.6
tử thứ 4: 8.4
vị trí phần tử cần xóa: 2
sau khi xóa phần tử thứ 2 là: 3.2 5.6 8.4
11. Xây dựng hàm để xóa phần tử có giá trị bằng x trong mảng gồm n phần tử là các số nguyên.
Hãy sinh ra một mảng các nguyên ngẫu nhiên gồm (n ≤ 100) phần tử, mỗi phần tử có giá trị
thuộc đoạn [0, 200], sau áp dụng hàm trên để xóa tất cả các phần tử có giá trị bằng x.
Nhập
Mảng
Nhập
Mảng
Có 3
vào số phần tử của mảng: 7
được sinh ngẫu nhiên gồm 7 phần tử là: 3 5 5 4 7 5 9
vào x: 5
sau khi xóa các phần tử có giá trị bằng 5: 3 4 7 9
phần tử bị xóa khỏi mảng.
12. Chèn một số nguyên x vào mảng A sao cho sau khi chèn, mảng A có thứ tự tăng dần. Biết rằng
trước đó mảng A đã có thứ tự tăng dần.
Mảng A ban đầu: [1 3 5 7]
Nhập x: 4
Mảng A sau khi chèn x = 4: [1 3 4 5 7]
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
14
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
13. Nhập vào mảng A gồm n (n ≤ 100) phần tử là các số nguyên dương. Trong quá trình nhập
kiểm tra các phần tử nhập vào không được trùng, nếu trùng thì thơng báo và u cầu nhập
lại. Q trình nhập dừng lại khi nhập vào số 0.
Nhập phần tử thứ 1: 5
Nhập phần tử thứ 2: 3
Nhập phần tử thứ 3: 5
Đã có phần tử này trong mảng. Vui lòng nhập lại!
Nhập phần tử thứ 3: 4
Nhập phần tử thứ 4: 0
Mảng vừa nhập là [5 3 4], gồm có 3 phần tử.
14. Quay vịng mảng A sang phải k vị trí.
Nhập
Nhập
Nhập
Mảng
số phần tử n: 6
mảng A: 3 5 1 2 4
số vị xoay k: 3
A sau khi xoay 3 vị trí: 1 2 4 3 5
Gợi ý: Viết hàm để quay mảng A sang phải k vị trí. Có 2 cách để quay sang phải k vị trí. Cách 1: tạo một mảng mới
sau đó dễ dàng tính tốn vị trí sau khi quay của mảng ban đầu (tốn thêm bộ nhớ nhưng chạy nhanh hơn). Cách 2: lần
lượt quay từng vị trí, mỗi lần chỉ quay 1 vị trí (khơng tốn thêm bộ nhớ nhưng chạy lâu hơn).
15. Tách 1 mảng các số nguyên X thành 2 mảng A và B, sao cho mảng A chứa toàn số lẻ và mảng B
chứa toàn số chẵn. Mảng X được sinh một cách ngẫu nhiên với mỗi phần tử có giá trị thuộc
đoạn [1, 50].
Nhập số phần tử của mảng X: 7
Mảng X được sinh ngẫu nhiên: [22 7 14 30 43 6 2]
Sau khi tách, ta có:
- Mảng A: [7 43]
- Mảng B: [22 14 30 6 2]
16. Nhập vào một mảng A gồm n (n ≤ 100) phần tử số nguyên, sau đó hiển thị các dãy con tăng có
trong mảng.
Nhập vào số phần tử của mảng: 7
Nhập phần tử thứ 1: 1
Nhập phần tử thứ 2: 2
Nhập phần tử thứ 3: 8
Nhập phần tử thứ 4: 4
Nhập phần tử thứ 5: 7
Nhập phần tử thứ 6: 10
Nhập phần tử thứ 7: 9
Mảng vừa nhập là: [1 2 8 4 7 10 9]
Các dãy con tăng trong mảng là:
- Dãy con thứ 1: 1 2 8
- Dãy con thứ 2: 4 7 10
- Dãy con thứ 3: 9
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
15
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
17. Tìm giá trị lớn thứ k trong mảng A gồm n số tự nhiên (n ≤ 50). Mảng A được sinh một cách
ngẫu nhiên với mỗi phần tử có giá trị thuộc đoạn [0, 30].
Nhập vào số phần tử của mảng: 7
Mảng được sinh ngẫu nhiên gồm 7 phần tử là: [1 2 8 9 8 10 4]
Bạn muốn tìm giá trị lớn thứ mấy?: 2
Giá trị lớn thứ 2 của mảng là 9.
Nhập vào số phần tử của mảng: 7
Mảng được sinh ngẫu nhiên gồm 7 phần tử là: [1 2 8 9 8 10 4]
Bạn muốn tìm giá trị lớn thứ mấy?: 4
Giá trị lớn thứ 4 của mảng là 4.
18. Tìm giá trị xuất hiện nhiều nhất trong mảng các số nguyên.
Mảng A ban đầu: [1 4 5 4 5 4 7]
Giá trị xuất hiện nhiều nhất là 4 (xuất hiện 3 lần).
19. In ra tam giác Pascal.
Mảng chiều cao: 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Gợi ý: Sử dụng 2 mảng: một mảng để lưu hàng hiện tại của tam giác, mảng kia để tính hàng tiếp theo.
20. Nhập vào hai số nguyên dương a, b (a, b có tối đa 50 chữ số và a > b). Tính tổng và hiệu của
hai số trên.
Nhập a:
Nhập b:
a + b =
a – b =
124356847384
293847563
124650694947
124062999821
21. * Nhập vào hai số nguyên dương a, b (a, b có tối đa 50 chữ số). Tính tích của hai số trên.
Nhập a: 12435684
Nhập b: 2938
a * b = 36536039592
22. * Liệt kê tất cả các chuỗi nhị phân độ dài k theo thứ tự từ điển.
Nhập k: 2
Các chuỗi nhị phân có độ dài 2 là:
00
01
10
11
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
16
10/2011
KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ
23. * Liệt kê tất cả các hoán vị của tập {1,2,...,n} theo thứ tự từ điển.
Nhập n: 3
Các hoán vị của tập {1,2,3} là:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
24. * Liệt kê tất cả các tổ hợp chập k của n phần tử theo thứ tự từ điển.
Nhập n, k: 4 2
Các tổ hợp chập 2 của 4 phần tử {1,2,3,4} là:
1 2
1 3
1 4
2 3
2 4
3 4
25. ** Liệt kê tất cả các tập con của tập A (gồm n phần tử trong một mảng cho trước, mảng này có
thứ tự tăng dần) sao cho tổng giá trị các phần tử trong tập con này bằng một số nguyên k c ho
trước. Biết tập A gồm các phần tử có giá trị khác nhau từng đôi một.
Tập A ban đầu: 1 2 5 4
Nhập k: 6
Các tập con của A có tổng bằng 6 là:
1 5
2 4
Gợi ý: Có một cách là duyệt lần lượt các dãy nhị phân có độ dài n. Mỗi chuỗi sẽ tương ứng với một tập con của A (=1
nghĩa là thuộc tập A, =0 nghĩa là không thuộc tập A).
BÀI TẬP TIN HỌC ĐẠI CƯƠNG (BẢN CHƯA HO[N THIỆN)
| MẢNG MỘT CHIỀU
17