Bài giảng tóm tắt Thực hành nhập môn lập trình - Trần Ngọc Anh
MỤC LỤC
Mục 1: Hướng dẫn viết và chạy chương trình (CT) bằng VC++ 6.0. .1
1.1 Chạy Visual Studio C++ 6.0. .1
1.2 Mở dự án Win32 Console Application. .1
1.3 Viết chương trình (CT). .4
1.4 Chạy và kiểm tra tính đúng của CT .5
Mục 2: Hướng dẫn sửa một số lỗi / cảnh báo thường gặp.8
Mục 3: Kỹ thuật chạy Debug để gỡ rối CT. .12
3.1 Xét CT xuất ra bảng mã ASCII của 256 ký tự. .12
3.2 Xét CT dổi số sang hệ 16.15
3.3 Xét CT dổi số từ hệ 10 sang hệ b dùng hàm.18
Mục 4: Một kỹ thuật kiểm chứng tự động CT trên các bộ dữ liệu được sinh
ngẫu nhiên.22
Mục 5: Con trỏ.24
5.1 Định nghĩa, khai báo, khởi tạo và sử dụng con trỏ.24
5.2 Cấp phát và thu hồi vùng nhớ bằng con trỏ.25
5.3 Toán tử tăng / giảm trên biến con trỏ .25
5.4 Một ứng dụng con trỏ để hoán vị giá trị hai biến .26
Mục 6: Tìm hiểu một số hàm xử lý chuỗi trong thư viện string.h .27
Bài tập .28
là giờ bắt đầu thuê (GBD), giờ kết thúc thuê (GKT), số máy thuê (SoMay). - Điều kiện cho dữ liệu nhập: 6<=GBD<GKT<=21. Giờ là số nguyên. - Đơn giá: 2500đ cho mỗi giờ máy trước 17:30 và 3000đ cho mỗi giờ máy sau 17:30. 11. Nhập số nguyên dương n gồm 5 chữ số, kiểm tra xem các chữ số n có phải là số đối xứng hay không. Ví dụ: Đối xứng: 13531 Không đối xứng: 13921 12. Nhập số nguyên dương n gồm k chữ số (0 < k ≤ 5): a. đếm xem n có bao nhiêu chữ số chẵn và bao nhiêu chữ số lẻ. b. đếm xem n có bao nhiêu chữ số là số nguyên tố. c. tính tổng các ước số dương của n. d. tìm ước số lẻ lớn nhất của n. e. kiểm tra xem các chữ số của n có toàn lẻ hay toàn chẵn không. f. sắp xếp các chữ số của n theo thứ tự tăng dần. g. tìm vị trí xuất hiện của chữ số có giá trị x trong n. h. kiểm tra xem các chữ số của n có được sắp thứ tự không. i. tính giá trị trung bình các chữ số chẵn trong n. 13. Nhập 2 số a, b sao cho: số lớn nhất trong 2 số phải là một số dương và chia hết cho 7. Nếu nhập sai phải yêu cầu nhập lại cho đến khi đúng. 14. In ra màn hình tất cả các ngày (dưới dạng ngày/tháng) của năm hiện tại, in ra màn hình thời gian trong ngày (dưới dạng giờ:phút:giây). 15. Sắp xếp mảng: a. theo thứ tự tăng dần của các phần tử là số nguyên tố. b. các phần tử lẻ tăng dần. c. các phần tử chẵn giảm dần. d. các phần tử chẵn nằm bên trái theo thứ tự tăng dần còn các phần tử lẻ bên phải theo thứ tự giảm dần. e. các phần tử âm giảm dần từ trái sang phải, phần tử dương tăng dần từ phải sang trái. 16. Xoá: a. phần tử tại vị trí lẻ trong mảng. b. phần tử có giá trị lớn nhất trong mảng. c. xoá tất cả các phần tử có giá trị nhỏ hơn X. d. xoá phần tử có giá trị gần X nhất. 17. Chèn phần tử có giá trị X vào: a. vị trí đầu tiên của mảng. b. phía sau phần tử có giá trị lớn nhất trong mảng. c. trước phần tử có giá trị là số nguyên tố đầu tiên trong mảng. d. phía sau tất cả các phần tử có giá trị chẵn trong mảng. 18. Tách 1 mảng các số nguyên 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. Ví dụ: Mảng ban đầu: 1 3 8 2 7 5 9 0 10 Mảng a: 1 3 7 5 9 Thực hành nhập môn lập trình 32 Mảng b: 8 2 10 19. Cho 2 mảng số nguyên a và b kích thước lần lượt là n và m. Viết chương trình nối 2 mảng trên thành mảng c theo nguyên tắc chẵn ở đầu mảng và lẻ ở cuối mảng. Ví dụ: Mảng a: 3 2 7 5 9 Mảng b: 1 8 10 4 12 6 Mảng c: 6 12 4 10 8 2 3 7 5 9 1 20. Nhập vào mảng A gồm n phần tử, 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ông báo và yêu cầu nhập lại. 21. Tính tổng của từng dãy con giảm trong mảng. 22. Chỉ ra số hạng lớn thứ k của mảng. Ví dụ: Mảng a: 6 3 1 10 11 18 k = 2 Kết quả: 11 23. Liệt kê các bộ 4 số a, b, c, d trong mảng các số nguyên (có ít nhất 4 phần tử và đôi một khác nhau) sao cho a + b = c + d. 24. Tính trung bình cộng của các tổng các dãy tăng dần có trong mảng các số nguyên. Ví dụ: 1 2 3 4 2 3 4 5 6 4 5 6 => TB = 15. 25. Tính tổng tất cả các phần tử xung quanh trên mảng các số nguyên. (Phần tử xung quanh là hai phần tử bên cạnh cộng lại bằng chính nó (Ví dụ: 1 3 2 Æ 1,2 là hai phần tử xung quanh của 3). Ví dụ: 1 3 2 5 3 9 6 Æ tổng 17 26. Nhập vào hai số lớn a, b nguyên ( a, b có từ 20 chữ số trở lên). Tính tổng, hiệu, tích, thương của hai số trên. 27. Tính tổng các phần tử là số Amstrong (số Amstrong là số có đặc điểm như sau: số có k ký số, tổng của các luỹ thừa bậc k của các ký số bằng chính số đó. Ví dụ: 153 là số có các ký số 13+53+33= 153 là một số Amstrong). 28. Tìm và xóa tất cả các phần tử trùng với x trong mảng một chiều các số nguyên, nếu không tồn tại phần tử x trong mảng thì trả về -1. 29. Tìm số lẻ nhỏ nhất lớn hơn mọi số chẵn có trong mảng, giá trị chẵn nhỏ nhất nhỏ hơn mọi giá trị lẻ trong mảng các số nguyên. 30. Tìm mảng con tăng dần có tổng lớn nhất trong mảng một chiều. 31. Tách 1 mảng các số nguyên thành 2 mảng a và b, sao cho kết quả thu được là: • Mảng a chứa toàn số lẻ tăng dần. • Mảng b chứa toàn số chẵn giảm dần. (Không dùng sắp xếp) Hướng dẫn: Tìm vị trí chèn thích hợp khi trích phần tử từ mảng ban đầu. Ví dụ: Mảng ban đầu: 9 3 8 2 7 5 1 0 10 Mảng a: 1 3 5 7 9 Mảng b: 10 8 2 32. In ra tam giác Pascal. Thực hành nhập môn lập trình 33 33. Sinh ngẫu nhiên mảng các số nguyên gồm 10.000 phần tử, mỗi phần tử có giá trị từ 0 đến 32.000 và xây dựng hàm thống kê số lần xuất hiện các phần tử trong mảng, sau đó cho biết phần tử nào xuất hiện nhiều lần nhất. Ví dụ: Mảng: 5 6 11 4 4 5 4 5 xuất hiện 2 lần 6 xuất hiện 1 lần 11 xuất hiện 1 lần 4 xuất hiện 3 lần 34. Cho mảng A có n phần tử. Nhập vào số nguyên k ( k ≥ 0), dịch phải xoay vòng mảng A k lần. Ví dụ: Mảng A: 5 7 2 3 1 9 Nhập k = 2 Dịch phải xoay vòng mảng A: 1 9 5 7 2 3 35. Viết chương trình tìm kiếm tên trong chuỗi họ tên. Nếu có thì xuất ra là tên này đã nhập đúng, ngược lại thông báo là đã nhập sai. 36. Viết chương đảo vị trí của từ đầu và từ cuối. Ví dụ: nhập “bo an co” xuất ra “co an bo” 37. Nhập một chuỗi bất kỳ, sau đó hỏi người dùng cần tách bắt đầu từ đâu trong chuỗi trở về sau. Ví dụ: Nhập chuỗi S1: “trường Đại học Đà Lạt – Khoa Toán - Tin”. Người nhập muốn tách bắt đầu từ chữ “Khoa” thì sẽ xuất ra chuỗi “Khoa Toán - Tin”. 38. Kiểm tra xem trong chuỗi có ký tự số hay không nếu có tách ra thành một mảng số riêng. 39. Đảo ngược thứ tự các từ có trong chuỗi Ví dụ: Nhập Truong CD CNTT TpHCM Xuất ra màn hình là: TpHCM CNTT CD Truong 40. Nhập một ma trận: a. in ra những phần tử có ký số tận cùng là 5. b. in ra các phần tử nằm trên 2 đường chéo. c. in ra các phần tử nằm phía trên / dưới đường chéo phụ của ma trận vuông các số nguyên. d. in ra các phần tử nằm phía trên / dưới đường chéo chính của ma trận vuông các số nguyên. e. tính tổng các phần tử trên cùng một dòng, cùng một cột, các phần tử chẵn, số nguyên tố, nằm trên đường chéo chính của ma trận vuông. f. tính tổng các giá trị lớn nhất trên mỗi dòng, cột. g. tính giá trị trung bình của các phần tử nhỏ nhất trên mỗi cột. 41. Khởi tạo ma trận A chứa các số thực ngẫu nhiên có kích thước m× n và sắp xếp A: a. theo thứ tự tăng dần từ trên xuống dưới và từ trái qua phải. b. theo thứ tự giảm dần từ trên xuống dưới và từ trái sang phải. c. các dòng theo thứ tự tăng dần, các cột theo thứ tự giảm dần. 42. Nhập một ma trận A: a. Hoán vị 2 dòng / cột của A. b. Bỏ dòng i và cột j của A. Thực hành nhập môn lập trình 34 c. Giả sử A là ma trận vuông có kích thước n x n. Tách A thành 4 ma trận con A1,1, A1,2, A2,1, A2,2, sao cho: d. phát sinh ma trận B là ma trận lật ngược của ma trận A. Ví dụ: e. phát sinh ma trận B sao cho các phần tử của B là trung bình cộng các phần tử trong hình vuông 3x3 tâm tại (i, j). Ví dụ: 43. Nhập một ma trận A, in ra tất cả các đường chéo phụ / chính. Ví dụ: các đường chéo phụ 44. Cho một mảng các phân số (PHANSO) gồm n phần tử (n≤50). Hãy viết chương trình nhập và xuất danh sách các phân số sau đó tìm phân số có giá trị lớn nhất, tổng và tích các phân số, nghịch đảo giá trị các phân số trong mảng và sắp xếp danh sách các phân số theo thứ tự giảm dần. 45. Tổ chức dữ liệu quản lí danh mục các bộ phim VIDEO, các thông tin liên quan đến bộ phim này như sau: - Tên phim (tựa phim). - Thể loại (3 loại : hình sự, tình cảm, hài). - Tên đạo diễn. - Tên điễn viên nam chính. - Tên diễn viên nữ chính. - Năm sản xuất. - Hãng sản xuất Viết chương trình thực hiện những công việc sau: • Nhập vào bộ phim mới cùng với các thông tin liên quan đến bộ phim này. A1,1 A1,2 A = A2,1 A2,2 Thực hành nhập môn lập trình 35 • Nhập một thể loại. In ra danh sách các bộ phim thuộc thể loại này. • Nhập một tên nam diễn viên. In ra các bộ phim có diễn viên này đóng. • Nhập tên đạo diễn. In ra danh sách các bộ phim do đạo diễn này dàn dựng. 46. Một cửa hàng cần quản lý các mặt hàng, thông tin một mặt hàng bao gồm: - Mã hàng. - Tên mặt hàng. - Số lượng. - Đơn giá. - Số lượng tồn. - Thời gian bảo hành (tính theo đơn vị tháng). Viết chương trình thực hiện những công việc sau: • Hãy nhập vào một danh sách các mặt hàng. • Tìm mặt hàng có số lượng tồn nhiều nhất. • Tìm mặt hàng có số lượng tồn ít nhất. • Tìm mặt hàng có giá tiền cao nhất. • In ra những mặt hàng có thời gian bảo hành lớn hơn 12 tháng. • Sắp xếp các mặt hàng theo thứ tự tăng dần của số lượng tồn. 47. Viết chương trình quản lý vé tàu, thông tin một vé tàu như sau : - Ngày giờ khởi hành, ngày giờ đến. - Ga đi, ga đến. - Loại tàu, loại chỗ ngồi ( ngồi, nằm, cứng, mềm). - Số toa, số ghế. Viết chương trình thực hiện những công việc sau: • nhập vào danh sách các vé tàu. • In danh sách các vé tàu có ga đến là Huế. • In danh sách các vé tàu có ga đến là Hà Nội và đi ngày 8/6/2005. • Đếm xem có bao nhiêu khách đi tàu loại chỗ ngồi là nằm cứng. 48. Tính tiền điện hàng tháng của các hộ gia đình, thông tin các khách hàng như sau: - Kỳ thu, từ ngàyđến ngày. - Tên khách hàng, mã khách hàng. - Địa chỉ. - Điện năng tiêu thụ (Kwh). Viết chương trình thực hiện những công việc sau: • Nhập vào danh sách các khách hàng. • Xuất danh sách hoá đơn theo thứ tự tăng dần của điện năng tiêu thụ. • Tính tiền điện của các khách hàng theo quy định sau. - 100 kw đầu tiên là 550 đ / kw - 50 kw tiếp theo là 900 đ / kw - 50 kw tiếp theo là 1210 đ / kw - Thuế 10 % trên tổng số tiền phải trả • Tính tổng số tiền thu được của các khách hàng. TÀI LIỆU THAM KHẢO [1] A. B. Downey, How to think like a computer scientist, C++ Version, First Edition, 1999. [2] H. M. Deitel, P. J. Deitel, C++ How to Program, Fifth Edition, Prentice Hall, 2005. [3] S. R. Davis, C++ for Dummies 5th Edition, Willey Publishing, Inc, 2004. [4] Trần Minh Thái, Giáo trình bài tập kỹ thuật lập trình C, Trường CĐ Công Nghệ Thông Tin Tp. Hồ Chí Minh.
File đính kèm:
- bai_giang_tom_tat_thuc_hanh_nhap_mon_lap_trinh_tran_ngoc_anh.pdf