Your SlideShare is downloading. ×
Baitap pascal cơ bản
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Baitap pascal cơ bản

27,500
views

Published on

Một số bài tập pascal cơ bản cũng cố kiến thức cho học sinh chuẩn bị ôn chuyên đề

Một số bài tập pascal cơ bản cũng cố kiến thức cho học sinh chuẩn bị ôn chuyên đề

Published in: Education

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
27,500
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
287
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 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ườngBà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 .........................................
  • 2. A. NHẬP XUẤT DỮ LIỆUViế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 4 Tổng: 6 + 4 = 10 Hiệu: 6 - 4 = 2 Tích: 6 x 4 = 24 Thương: 6 / 4 = 1.502. 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.6463. Hiển thị mã ASCII của một kí tự. Nhập ký tự: A Mã ASCII của ký tự A là: 654. 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à: a5. 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 của 3, 4, và 7 là: 4.676. 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.67. 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 vuong8. 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
  • 3. 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ẫu): 2 3 Nhập phân số thứ 2 (tử, mẫu): 3 4 2/3 cộng 3/4 = 1.42 2/3 trừ 3/4 = -0.08 2/3 nhân 3/4 =0.50 2/3 chia 3/4 =0.89B. LƯU ĐỒ - THUẬT TOÁNThiế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ứ 22. 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): 55. Tính X(n) = 1 + 2 + 3 + … + n Nhập n (n>0): 3 X(3) = 66. Tính Y(n) = 1 × 2 × 3 × … × n Nhập n (n>0): 4 Y(3) = 247. Tính Z(n) = 2 + 4 + 6 + … + 2n Nhập n (n>0): 3 Z(3) = 12BÀI TẬP TIN HỌC ĐẠI CƯƠNG | LƯU ĐỒ - THUẬT TOÁN 2
  • 4. 10/20128. Tính A(n) = 1 × 3 × 5 × … × (2n+1) Nhập n (n>0): 3 A(3) = 1059. Tính C(n) = 12 + 22 + 32 + … + n2 Nhập n (n>0): 3 C(3) = 1410. Tính B(n) = 1 - 2 + 3 - 4 + … + (-1)n+1n Nhập n (n>0): 3 B(3) = 211. * 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) = 1012. * 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 của 3 số thực trên là: 4C. CẤU TRÚC RẼ NHÁNHViế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ẵn2. 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ỏi3. 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.30BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC RẼ NHÁNH 3
  • 5. 10/20124. 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) = 55. 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 = -26. 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 = 27. 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ín8. 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 vuông 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.339. 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à 610. 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à 1111. 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 đồngBÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC RẼ NHÁNH 4
  • 6. 10/201213. 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ề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 đồng15. * 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:0016. * 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/2011D. CẤU TRÚC LẶPViế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! = 242. Tính n!, với n là một số nguyên dương. Nhập n: 4 4! = 1*2*3*4 = 243. 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 64. 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 | CẤU TRÚC LẶP 5
  • 7. 10/20125. 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ét6. 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*59. 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 710. 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*511. 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 hảo12. Đế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à 4BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC LẶP 6
  • 8. 10/201213. 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 114. 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à 715. 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à 416. 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ố Amstrong17. 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à 1818. Đọc một số tự nhiên. Nhập số tự nhiên: 1410 Đọc là: một bốn một không19. 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à : 420. 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à : 121. 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 hảo nhỏ hơn 9000 là: 6 28 496 812822. 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
  • 9. BÀI TẬP TIN HỌC ĐẠI CƯƠNG | CẤU TRÚC LẶP 7
  • 10. 10/201223. 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 x 5 x 2 = 10 | 6 x 2 = 12 | 7 x 2 = 14 | 8 x 1 = 8 | 9 x 1 = 9 | 5 x 3 = 15 | 6 x 3 = 18 | 7 x 3 = 21 | 8 x 2 = 16 | 9 x 2 = 18 | 5 x 4 = 20 | 6 x 4 = 24 | 7 x 4 = 28 | 8 x 3 = 24 | 9 x 3 = 27 | 5 x 5 = 25 | 6 x 5 = 30 | 7 x 5 = 35 | 8 x 4 = 32 | 9 x 4 = 36 | 5 x 6 = 30 | 6 x 6 = 36 | 7 x 6 = 42 | 8 x 5 = 40 | 9 x 5 = 45 | 5 x 7 = 35 | 6 x 7 = 42 | 7 x 7 = 49 | 8 x 6 = 48 | 9 x 6 = 54 | 5 x 8 = 40 | 6 x 8 = 48 | 7 x 8 = 56 | 8 x 7 = 56 | 9 x 7 = 63 | 5 x 9 = 45 | 6 x 9 = 54 | 7 x 9 = 63 | 8 x 8 = 64 | 9 x 8 = 72 | 9 = 72 | 9 x 9 = 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 | CẤU TRÚC LẶP 8
  • 11. 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: 20 1 1 2 3 5 8 1330. * 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 độ): 30 sin(30) = 0.531. * 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.532. * 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.1416E. HÀM - ĐỆ QUYViế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
  • 12. 10/20122. 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 để 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 phả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 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! = 247. 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! = 34BÀI TẬP TIN HỌC ĐẠI CƯƠNG | HÀM - ĐỆ QUY 10
  • 13. 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) = 109. 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) = 410. 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) = 1211. 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) = 212. 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) = 6013. 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à 1514. 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 9815. 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
  • 14. BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU 1101116. 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à 13F. MẢNG MỘT CHIỀUViế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ầ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 Mảng vừa nhập là: 1,2,8,4,7,10,9 Mả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ầ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.
  • 15. 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ầ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ố 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ầ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. xứng hay không. Một mảng { }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 được gọi là đối xứng nếu
  • 16. 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ứngBÀ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ầ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.009. 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.010. 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ần tử của mảng: 4 Phần tử thứ 1: 3.2 Phần tử thứ 2: 2.3 Phần tử thứ 3: 5.6 Phần tử thứ 4: 8.4 Nhập vị trí phần tử cần xóa: 2 Mảng sau khi xóa phần tử thứ 2 là: 3.2 5.6 8.411. 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 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à: 3 5 5 4 7 5 9 Nhập vào x: 5 Mảng sau khi xóa các phần tử có giá trị bằng 5: 3 4 7 9 Có 3 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
  • 17. Mả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/201113. 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ầ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 số phần tử n: 6 Nhập mảng A: 3 5 1 2 4 Nhập số vị xoay k: 3 Mả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ầ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
  • 18. - Dãy con thứ 3: 9BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU 15
  • 19. 10/201117. 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: 124356847384 Nhập b: 293847563 a + b = 124650694947 a - b = 12406299982121. * 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 = 3653603959222. * 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 11BÀI TẬP TIN HỌC ĐẠI CƯƠNG | MẢNG MỘT CHIỀU 16
  • 20. 10/201123. * 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 124. * 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 425. ** 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 đầ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 | MẢNG MỘT CHIỀU 17