28
TRƯỜNG THPT SỐ 4 BỐ TRẠCH TỔ LÝ TIN KỸ CN BÀI TẬP TIN HỌC ĐẠI CƯƠNG PHẦN NGÔN NGỮ LẬP TRÌNH PASCAL CƠ BẢN DÀNH CHO ÔN THI HỌC SINH GIỎI Giáo viên: Nguyễn Văn Tường Bài tập biên soạn theo các phần sau: A. NHẬP XUẤT DỮ LIỆU .............. B. LƯU ĐỒ - THUẬT TOÁN ........... C. CẤU TRÚC RẼ NHÁNH ............. D. CẤU TRÚC LẶP .................. E. HÀM - ĐỆ QUY .................. F. MẢNG MỘT CHIỀU .................

bài tập Pascal

Embed Size (px)

DESCRIPTION

Tài liệu học Pascal

Citation preview

Page 1: bài tập Pascal

TR NG THPT S 4 B TR CHƯỜ Ố Ố Ạ

T LÝ TIN KỸ CNỔ

BÀI TẬP TIN HỌC ĐẠI CƯƠNGPHẦN NGÔN NGỮ LẬP TRÌNH PASCAL CƠ BẢN

DÀNH CHO ÔN THI HỌC SINH GIỎI

Giáo viên: Nguy n Văn T ngễ ườ

Bài t p biên so n theo các ph n sau:ậ ạ ầ

A. NHẬP XUẤT DỮ LIỆU .................................... B. LƯU ĐỒ - THUẬT TOÁN ................................ C. CẤU TRÚC RẼ NHÁNH .................................. D. CẤU TRÚC LẶP ............................................... E. HÀM - ĐỆ QUY ................................................. F. MẢNG MỘT CHIỀU .........................................

Page 2: bài tập Pascal

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, b: 6 4Tổ�ng: 6 + 4 = 10Hiệu: 6 - 4 = 2Tích: 6 x 4 = 24Thương: 6 / 4 = 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 cu�a 7 là 2.646

3. Hi n th mã ASCII c a m t kí t . ể ị ủ ộ ựNhập ký tự: A Mã ASCII cu�a ký tự A là: 65

4. Hi n th ký t khi bi t mã ASCII c a nó. ể ị ự ế ủNhập mã ASCII cu�a ký tự: 97 Ký tự có mã ASCII 97 là: a

5. Tính trung bình c ng c a 3 s nguyên. ộ ủ ốNhập a, b, c: 3 4 7 Trung bình cộng cu�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 Khoa�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ểKu dài, chiểKu rộng: 4 6Chu vi và diện tích cu�a hình chữ nhật 4x6 lầKn lượt la: 20 24

Page 3: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | NHẬP XUẤT DỮ LIỆU9. * 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ổ$ thứ 1 (tư�, mầOu): 2 3 Nhập phần sổ$ thứ 2 (tư�, mầOu): 3 4 2/3 cộng 3/4 = 1.422/3 trừ 3/4 = -0.082/3 nhần 3/4 = 0.502/3 chia 3/4 = 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ầKn 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 cu�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): 4Y(3) = 24

7. Tính Z(n) = 2 + 4 + 6 + … + 2n

Nhập n (n>0): 3Z(3) = 12

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | LƯU ĐỒ - THUẬT TOÁN2

Page 4: bài tập Pascal

10/2012

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 để� dừng): 3 Nhập một sổ$ (nhập 0 để� dừng): 4 Nhập một sổ$ (nhập 0 để� dừng): 5 Nhập một sổ$ (nhập 0 để� dừng): 0 Trung bình cộng cu�a 3 sổ$ thực 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ăOn

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 cu�a sinh viển này là Gio�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.7Max(12.30, 3.70) = 12.30

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC RẼ NHÁNH3

Page 5: bài tập Pascal

10/2012

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: 2Nhập sổ$ thứ hai:5Nhập sổ$ thứ ba: 4Min(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: axả ệ ậ ươ ậ 2 + 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 cu�a 1 tam giác vuổng có diện tích 6

Nhập a, b, c: 3 4 6 Đầy là 3 cạnh cu�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ổKm 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ổKm 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ểKn cước: 372000 đổKng

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC RẼ NHÁNH4

Page 6: bài tập Pascal

10/2012

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 vuông, hình ch nh t đ ng hay hình ch nh t n m. ế ữ ậ ứ ữ ậ ằ

Nhập vào chiểKu dài, chiểKu 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 theoGiá 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 cu�a thuể bao: 810 TiểKn cước: 37400 đổKng

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 cu�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 nguyên 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ổ$ cu�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đ

Page 7: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC LẶP 5

Page 8: bài tập Pascal

10/2012

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 : ả ờ ỏ ằ ệ ấ ả ể ể ế ả

Yê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ổ$ nho� 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ổ$ nguyển dương: 14 14 khổng là một sổ$ chính phương

Nhập sổ$ nguyển dương: 25 25 là mổt sổ$ chính phương vì 25 = 5*5

11. Ki m tra xem m t s nguyên d ng n có ph i là s hoàn h o hay không? (S hoà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ổ$ nguyển dương: 6 6 là một sổ$ hoàn ha�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ổ$ cu�a 1420 là 4

Page 9: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC LẶP 6

Page 10: bài tập Pascal

10/2012

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ổ$ cu�a 1420 lầKn 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ổ$ cu�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 cu�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 cu�a 6 và 9 là 3 Bội sổ$ chung nho� nhầ$t cu�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ừ pha�i sang trái) cu�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 pha�i) cu�a sổ$ 1410 là : 1

21. Li t kê các s hoàn h o nh h n 9000. S hoà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 hoàn h o vì t ng các c s là 1+2+3=6. ằ ụ ố ố ả ổ ướ ố

Các sổ$ hoàn ha�o nho� 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

Page 11: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC LẶP 7

Page 12: bài tập Pascal

10/2012

23. In ra b ng c u ch ng t 5 đ n 9.ả ử ươ ừ ế

5 x 1 = 5 | 6 x 1 = 6 | 7 x 1 = 7 | 8 x5 x 2 = 10 | 6 x 2 = 12 | 7 x 2 = 14 | 8 x5 x 3 = 15 | 6 x 3 = 18 | 7 x 3 = 21 | 8 x5 x 4 = 20 | 6 x 4 = 24 | 7 x 4 = 28 | 8 x5 x 5 = 25 | 6 x 5 = 30 | 7 x 5 = 35 | 8 x5 x 6 = 30 | 6 x 6 = 36 | 7 x 6 = 42 | 8 x5 x 7 = 35 | 6 x 7 = 42 | 7 x 7 = 49 | 8 x5 x 8 = 40 | 6 x 8 = 48 | 7 x 8 = 56 | 8 x5 x 9 = 45 | 6 x 9 = 54 | 7 x 9 = 63 | 8 x

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 cu�a cạnh: 4** *

*

27. Vẽ tam giác cân có chi u cao h.ềNhập chiểKu cao tam giác: 4*

* **

28. Vẽ tam giác cân r ng có chi u cao h.ỗ ềNhập chiểKu cao tam giác: 4

** *

* **

BÀI TẬP TIN HỌC ĐẠI CƯƠNG

Page 13: bài tập Pascal

1 = 8 | 9 x 1 = 9 |2 = 16 | 9 x 2 = 18 |3 = 24 | 9 x 3 = 27 |4 = 32 | 9 x 4 = 36 |5 = 40 | 9 x 5 = 45 |6 = 48 | 9 x 6 = 54 |7 = 56 | 9 x 7 = 63 |8 = 64 | 9 x 8 = 72 |9 = 72 | 9 x 9 = 81 |

| CẤU TRÚC LẶP 8

Page 14: bài tập Pascal

10/2012

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: 201 1 2 3 5 8 13

30. * Tính sin(a) v i đ chính xác 0.01 (ớ ộ tính theo đ ).ộ

Bi t: ế v i ớ tính theo radian.

Nhập góc (theo độ): 30sin(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 | HÀM - ĐỆ QUY 9

Page 15: bài tập Pascal

10/2012

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 pha�i là một năm nhuận. Nhầ$n phím ESC để� thoá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 để� thoá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 nguyên d ng có ph i là nguyên 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 pha�i là một sổ$ nguyển 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 chotr 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 ca� 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: 44! = 24

7. Tính S = 0! + 1! + 2! + 3! + …..+ n!, v i n là m t s t nhiên.ớ ộ ố ựNhập n: 4S = 0! + 1! + 2! + 3! + 4! = 34

Page 16: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | HÀM - ĐỆ QUY 10

Page 17: bài tập Pascal

10/2011

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ổ$ cu�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ổ$ đa�o ngược cu�a 1340 là sổ$ 431

Page 18: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU 11011

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 nho� 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. [a0 a1 a2 … an-1 ] 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 [ ]a. Nhập vào sổ$ phầKn tư� cu�a ma�ng: 7

Nhập phầKn tư� thứ 1: 1 Nhập phầKn tư� thứ 2: 2 Nhập phầKn tư� thứ 3: 8 Nhập phầKn tư� thứ 4: 4 Nhập phầKn tư� thứ 5: 7 Nhập phầKn tư� thứ 6: 10 Nhập phầKn tư� thứ 7: 9 Ma�ng vừa nhập là: 1 2 8 4 7 10 9 Ma�ng vừa nhập là: 1,2,8,4,7,10,9 Ma�ng 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 nguyên 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ầKn tư� có giá trị lớn nhầ$t trong ma�ng [2 5 3 -3 7 6 1 -10 5 0] là phầKn 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].

Page 19: bài tập Pascal

Nhập sổ$ phầKn tư�: 5 Ma�ng ngầOu nhiển gổKm 5 phầKn 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 | MẢNG MỘT CHIỀU10/2011

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 đó 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ầKn tư�: 5Ma�ng ngầOu nhiển gổKm 5 phầKn 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 nguyên 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ầKn tư�: 5 Ma�ng ngầOu nhiển gổKm 5 phầKn tư� là: [64 32 66 97 23] Ma�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. ả ạ ớ ả ậ ượ ộ ả ầ

Ma�ng ban đầKu: A: [4 7 9 2] B: [6 8 1 3 5]

Ma�ng sau khi să$p xể$p: A: [2 4 7 9] B: [1 3 5 6 8]

Trộn ma�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

Page 20: bài tập Pascal

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ượ ọ ố ứ ếMa�ng A: [7.2 5.0 5.0 7.2] Ma�ng này đổ$i xứng

Ma�ng A: [1.0 3.3 3.3 2.0] Ma�ng này khổng đổ$i xứng

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU10/2011

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 a i 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ầKn tư� cu�a ma�ng: 4 PhầKn tư� thứ 1: 3 PhầKn tư� thứ 2: 2 PhầKn tư� thứ 3: 5 PhầKn tư� thứ 4: 8 Trung bình cộng các sổ$ chăOn 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ầKn tư� cu�a ma�ng: 6 Ma�ng được sinh ngầOu nhiển gổKm 6 phầKn tư� là: [2.3 8.5 4.0 7.2 10.0 9.8] Nhập vào x: 5.3 Có 2 phầKn tư� trong ma�ng có giá trị nho� 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 vào sổ$ phầKn tư� cu�a ma�ng: 4 PhầKn tư� thứ 1: 3.2 PhầKn tư� thứ 2: 2.3 PhầKn tư� thứ 3: 5.6 PhầKn tư� thứ 4: 8.4 Nhập vị trí phầKn tư� cầKn xóa: 2 Ma�ng sau khi xóa phầKn 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. ộ ạ ụ ể ấ ả ầ ử ị ằ

Page 21: bài tập Pascal

Nhập vào sổ$ phầKn tư� cu�a ma�ng: 7 Ma�ng được sinh ngầOu nhiển gổKm 7 phầKn tư� là: 3 5 5 4 7 5 9 Nhập vào x: 5 Ma�ng sau khi xóa các phầKn tư� có giá trị bằng 5: 3 4 7 9 Có 3 phầKn tư� bị xóa kho�i ma�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. ướ ả ứ ự ầMa�ng A ban đầKu: [1 3 5 7] Nhập x: 4 Ma�ng A sau khi chèn x = 4: [1 3 4 5 7]

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU0/2011

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à yêu c u nh p ể ầ ử ậ ượ ế ầ ậl i. Quá trình nh p d ng l i khi nh p vào s 0. ạ ậ ừ ạ ậ ốNhập phầKn tư� thứ 1: 5 Nhập phầKn tư� thứ 2: 3 Nhập phầKn tư� thứ 3: 5 Đã có phầKn tư� này trong ma�ng. Vui lòng nhập lại! Nhập phầKn tư� thứ 3: 4 Nhập phầKn tư� thứ 4: 0 Ma�ng vừa nhập là [5 3 4], gổKm có 3 phầKn tư�.

14. Quay vòng m ng A sang ph i k v trí. ả ả ịNhập sổ$ phầKn tư� n: 6 Nhập ma�ng A: 3 5 1 2 4 Nhập sổ$ vị xoay k: 3 Ma�ng 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 toá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ầKn tư� cu�a ma�ng X: 7 Ma�ng X được sinh ngầOu nhiển: [22 7 14 30 43 6 2] Sau khi tách, ta có: - Ma�ng A: [7 43] - Ma�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ầKn tư� cu�a ma�ng: 7 Nhập phầKn tư� thứ 1: 1 Nhập phầKn tư� thứ 2: 2

Page 22: bài tập Pascal

Nhập phầKn tư� thứ 3: 8 Nhập phầKn tư� thứ 4: 4 Nhập phầKn tư� thứ 5: 7 Nhập phầKn tư� thứ 6: 10 Nhập phầKn tư� thứ 7: 9 Ma�ng vừa nhập là: [1 2 8 4 7 10 9] Các dãy con tăng trong ma�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 | MẢNG MỘT CHIỀU 15

Page 23: bài tập Pascal

10/2011

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ầKn tư� cu�a ma�ng: 7 Ma�ng được sinh ngầOu nhiển gổKm 7 phầKn 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 cu�a ma�ng là 9.

Nhập vào sổ$ phầKn tư� cu�a ma�ng: 7 Ma�ng được sinh ngầOu nhiển gổKm 7 phầKn 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 cu�a ma�ng là 4.

18. Tìm giá tr xu t hi n nhi u nh t trong m ng các s nguyên. ị ấ ệ ề ấ ả ốMa�ng A ban đầKu: [1 4 5 4 5 4 7] Giá trị xuầ$t hiện nhiểKu nhầ$t là 4 (xuầ$t hiện 3 lầKn).

19. In ra tam giác Pascal.

Ma�ng chiểKu 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: 124356847384 Nhập b: 293847563 a + b = 124650694947 a - b = 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ổOi nhị phần có độ dài 2 là: 00 01 10 11

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU 16

Page 24: bài tập Pascal

10/2011

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ị cu�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 cu�a 4 phầKn 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 cho ứ ự ầ ổ ị ầ ử ậ ằ ộ ố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 đầKu: 1 2 5 4 Nhập k: 6 Các tập con cu�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).

Page 25: bài tập Pascal

BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU 17