intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Lê Đào Quang Huy | Ngày: | Loại File: DOC | Số trang:22

304
lượt xem
45
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 được biên soạn theo các phần sau: Nhập xuất dữ liệu, lưu đồ thuật toán, cấu trúc rẽ nhánh, cấu trúc lặp, hàm đệ quy, mảng một chiều. Để nắm vững nội dung chi tiết mời các bạn cùng tham khảo tài liệu.

Chủ đề:
Lưu

Nội dung Text: 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

  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ườ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 ......................................... 
  2. 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 4 Tổng: 6 + 4 = 10 Hiệu: 6 - 4 = 2 Tích: 6 x 4 = 24 Thươ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 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ố nguyên.  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
  3. BÀI TẬP TIN HỌC ĐẠI CƯƠNG   | NHẬP XUẤT DỮ LIỆU 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ố 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.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   | LƯU ĐỒ ­ THUẬT TOÁN 2
  4. 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 củ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ẵ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   | CẤU TRÚC RẼ NHÁNH 3
  5. 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: 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 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.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   | CẤU TRÚC RẼ NHÁNH 4
  6. 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ề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ố 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ố 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   | CẤU TRÚC LẶP 5
  7. 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ố 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ố 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 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   | CẤU TRÚC LẶP 6
  8. 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ố 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ố 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 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
  9. BÀI TẬP TIN HỌC ĐẠI CƯƠNG   | CẤU TRÚC LẶP 7
  10. 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 * * x * * 5 x 2 = 10 | 6 x 2 = 12 | 7 * x 2 = 14 | 8 x 5 x 3 = 15 | 6 x 3 = 18 | 7 x 3 = 21 | 8 x 5 x 4 = 20 | 6 x 4 = 24 | 7 BÀI TẬP TIN HỌC ĐẠI CƯƠNG   x 4 = 28 | 8 x 5 x 5 = 25 | 6 x 5 = 30 | 7 x 5 = 35 | 8 x 5 x 6 = 30 | 6 x 6 = 36 | 7 x 6 = 42 | 8 x 5 x 7 = 35 | 6 x 7 = 42 | 7 x 7 = 49 | 8 x 5 x 8 = 40 | 6 x 8 = 48 | 7 x 8 = 56 | 8 x 5 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 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 *
  11. 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 
  12. 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 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 độ): 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   | HÀM ­ ĐỆ QUY 9
  13. 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 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! = 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   | HÀM ­ ĐỆ QUY 10
  14. 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ố 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
  15. 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 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. [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
  16. 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   | 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. 
  17.  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   | 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 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 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.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 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.
  18. 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   | 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ầ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
  19. 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   | MẢNG MỘT CHIỀU 15
  20. 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ầ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 = 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   | MẢNG MỘT CHIỀU 16
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2