Thực hành tin đại cương

  • 3,342 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,342
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
50
Comments
0
Likes
3

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. BỘ MÔN CÔNG NGHỆ PHẦN MỀM TIN HỌC ĐẠI CƯƠNG HƯỚNG DẪN THỰC HÀNH Hà Nội, 10/2009 Phần thực hành bao gồm các bài tập mẫu giúp cho sinh viên hiểu sâu hơn về ngôn ngữ và các bài tập tự làm giúp sinh viên áp dụng các kiến thức đã học để giải quyết một bài toán cụ thể.
  • 2. HƯỚNG DẪN THỰC HÀNH MÔN TIN HỌC ĐẠI CƯƠNG ội dung thực hành gồm 5 bài, thực hiện trong 5 buổi thực hành đối với những lớp học 3 tín chỉ và 3 buổi thực hành đối với những lớp học 2 tín chỉ, mỗi buổi thực hành kéo dài 120 phút. Mỗi bài thực hành gồm có phần yêu cầu lý thuyết, phần các bài tập mẫu và các bài tập tự làm. Sinh viên đọc lại phần lý thuyết trong bài giảng, thực hiện các bài tập mẫu và đưa ra nhận xét về kết quả nhận được khi thực hiện các bài tập mẫu. Sau mỗi bài tập mẫu, thực hiện một số thay đổi đối với bài tập mẫu và nhận xét kết quả. Sinh viên tự làm phần bài tập tự làm. Giáo viên hướng dẫn sinh viên thực hiện các bài tập và kiểm tra kết quả thực hiện của sinh viên. N
  • 3. MỤC LỤC Bài 1. Hệ điều hành Windows XP và môi trường Turbo C++ 3.0 ........................................5 1.1. Hệ điều hành Windows XP .......................................................................................5 1.1.1. Mục tiêu ........................................................................................................................ 5 1.1.2. Yêu cầu lý thuyết........................................................................................................... 5 1.1.3. Khởi động máy tính....................................................................................................... 5 1.1.4. Các thành phần trên màn hình Desktop........................................................................ 5 1.1.5. Sử dụng chuột .............................................................................................................. 6 1.1.6. Khởi động một chương trình ......................................................................................... 6 1.1.7. Cửa sổ của một chương trình ....................................................................................... 6 1.1.8. Window Explorer........................................................................................................... 8 1.1.9. Tắt máy tính an toàn ................................................................................................... 13 1.2. Môi trường Turbo C++ 3.0 và ngôn ngữ C .............................................................13 1.2.1. Mục tiêu ...................................................................................................................... 13 1.2.2. Yêu cầu lý thuyết......................................................................................................... 14 1.2.3. Môi trường Turbo C++ 3.0 .......................................................................................... 14 1.2.4. Các bài tập mẫu.......................................................................................................... 14 1.2.5. Các bài tập tự làm....................................................................................................... 17 Bài 2. Cơ bản về ngôn ngữ ...............................................................................................18 2.1. Mục tiêu ..................................................................................................................18 2.2. Yêu cầu lý thuyết ....................................................................................................18 2.3. Các bài tập mẫu......................................................................................................18 2.4. Các bài tập tự làm ..................................................................................................21 Bài 3. Một số thuật toán cơ bản ........................................................................................22 3.1. Mục tiêu ..................................................................................................................22 3.2. Yêu cầu lý thuyết ....................................................................................................22 3.3. Các bài tập mẫu......................................................................................................22 3.4. Các bài tập tự làm ..................................................................................................27 Bài 4. Ma trận....................................................................................................................29 4.1. Mục tiêu ..................................................................................................................29 4.2. Yêu cầu lý thuyết ....................................................................................................29 4.3. Các bài tập mẫu......................................................................................................29 4.4. Các bài tập tự làm ..................................................................................................31
  • 4. Bài 5. Cấu trúc ..................................................................................................................32 5.1. Mục tiêu ..................................................................................................................32 5.2. Yêu cầu lý thuyết ....................................................................................................32 5.3. Các bài tập mẫu......................................................................................................32 5.4. Các bài tập tự làm ..................................................................................................35
  • 5. 5 Bài 1. Hệ điều hành Windows XP và môi trường Turbo C++ 3.0 1.1. Hệ điều hành Windows XP 1.1.1. Mục tiêu - Biết cách bật, tắt máy tính. - Làm quen với các thao tác cơ bản trên hệ điều hành Windows XP. 1.1.2. Yêu cầu lý thuyết Sinh viên cần nắm vững những nội dung sau: - Các kiến thức cơ bản về máy tính. - Khái niệm về các hệ điều hành. 1.1.3. Khởi động máy tính - Nhấn nút Power trên thân máy, Windows sẽ tự khởi động. - Tùy thuộc vào cách thiết lập hệ thống, chúng ta có thể phải gõ mật khẩu (Password) để đăng nhập vào màn hình làm việc (Desktop) của Windows. 1.1.4. Các thành phần trên màn hình Desktop
  • 6. 6 + Các biểu tượng liên kết đến các chương trình thường sử dụng. + Thanh tác vụ chứa: - Nút Start dùng để mở thực đơn Start để khởi động các chương trình. - Nút các chương trình đang chạy: dùng để chuyển đổi qua lại giữa các chương trình. - Khay hệ thống: chứa các biểu tượng nhỏ giúp truy cập dễ dàng tới các chức năng hệ thống như giờ hệ thống, âm lượng, máy in, … 1.1.5. Sử dụng chuột Chuột dùng để điều khiển con trỏ chuột để tương tác với các đối tượng trên màn hình. Hiện nay, chuột thường có tối thiểu 2 nút: - Nút trái thường dùng để chọn đối tượng, rê đối tượng... - Nút phải thường dùng để hiển thị thực đơn ngữ cảnh. Nội dung của thực đơn ngữ cảnh tùy thuộc vào con trỏ chuột đang nằm trên đối tượng nào. Các hành động mà chuột thực hiện Di chuyển con trỏ chuột Rà chuột trên mặt phẳng bàn để di chuyển con trỏ chuột trên màn hình đến đối tượng cần xử lý. Nháy chuột trái Thường dùng để chọn một đối tượng bằng cách trỏ con trỏ chuột đến đối tượng, nhấn nhanh và nhả nút trái chuột. Rê chuột Dùng để di chuyển đối tượng hoặc quét chọn nhiều đối tượng ... bằng cách trỏ con trỏ chuột đến đối tượng, nhấn và giữ nút trái chuột, di chuyển chuột đến vị trí khác rồi nhả nút trái chuột. Nháy chuột phải Thường dùng hiển thị thực đơn ngữ cảnh liên quan đến mục được chọn, bằng cách trỏ con trỏ chuột đến đối tượng, nhấn nhanh và nhả nút phải chuột. Nháy kép chuột Thường dùng để kích hoạt chương trình được hiển thị dưới dạng một biểu tượng trên màn hình, bằng cách trỏ con trỏ chuột đến đối tượng, nhấn và nhả nút trái chuột nhanh 2 lần liên tiếp. 1.1.6. Khởi động một chương trình Nháy chuột trái lên nút Start, sau đó nháy chuột trái lên tên chương trình chúng ta muốn mở. Để mở một chương trình mà chúng ta không nhìn thấy trong thực đơn Start, hãy nháy chuột trái lên mục All Programs để hiển thị các chương trình đã cài đặt trên máy rồi nháy chuột trái lên tên chương trình cần thực hiện. 1.1.7. Cửa sổ của một chương trình
  • 7. 7 Mỗi chương trình khi chạy trong Windows sẽ được hiển thị dưới dạng một cửa sổ, cửa sồ này là phần giao tiếp giữa người sử dụng và chương trình. - Thanh tiêu đề: Chứa biểu tượng thực đơn hệ thống ở góc trái; tên chương trình; các nút thu nhỏ, phóng đại kích thước cửa sổ và nút đóng cửa sổ ở góc phải. - Thanh thực đơn: Chứa các chức năng của chương trình. - Thanh công cụ: Chứa các chức năng được biểu diễn dưới dạng biểu tượng. - Thanh trạng thái: Miêu tả đối tượng đang được trỏ hoặc thông tin trạng thái hiện thời. - Thanh cuốn dọc và ngang: Chỉ hiển thị khi nội dung không hiện đầy đủ trong cửa sổ. Chúng cho phép cuộn màn hình để xem nội dung nằm ngoài đường biên của cửa sổ. Thực hành + Mở cửa sổ My Computer: Nháy chuột trái vào nút Start, chọn mục My Computer. + Nháy chuột trái vào nút Thu nhỏ (Minimize) để thu nhỏ cửa sổ thành một nút lệnh trên thanh tác vụ. + Nháy chuột trái vào nút đó trên thanh tác vụ để đưa cửa sổ trở lại kích thước ban đầu. + Nháy chuột trái vào nút Phóng đại (Maximize) để phóng to kích thước cửa sổ. + Nháy chuột trái vào nút Phóng đại (bây giờ là Restore Down) để đưa cửa sổ trở lại kích thước bình thường. + Trỏ chuột vào đường biên của cửa sổ, khi chuột chuyển thành mũi tên 2 đầu thì kéo rê đường biên để thu nhỏ kích thước cửa sổ cho đến khi xuất hiện thanh cuốn dọc và ngang. + Bấm vào các nút mũi tên ở 2 đầu thanh cuộn để xem nội dung nằm ngoài đường biên của cửa sổ. + Trỏ chuột lên thanh tiêu đề và rê cửa sổ sang vị trí khác. + Đóng cửa sổ My Computer bằng một trong 2 cách sau: - Nháy chuột trái vào nút Đóng (Close) của cửa sổ. - Nháy chuột trái vào tên thực đơn File trên thanh thực đơn, thực đơn File xuất hiện, nháy chuột trái vào mục Close.
  • 8. 8 1.1.8. Window Explorer Các chương trình và dữ liệu của chúng ta được lưu dưới dạng các tập tin (Files) trên các thiết bị nhớ như: Ổ đĩa cứng, đĩa mềm, đĩa CD, ổ USB, ... Trong phần này, chúng ta sẽ học cách dùng Windows Explorer để quản lý các tập tin. Mở Windows Explorer Nháy chuột phải vào nút Start và nháy chuột trái vào mục Explorer để mở Windows Explorer. Khung trái cửa sổ chứa tên các ổ đĩa và các thư mục - Windows dùng các ký tự (A:), (B:) cho các ổ đĩa mềm; các ký tự (C:), (D:) … để đặt tên cho các loại ổ đĩa lưu trữ khác. - Mỗi ổ đĩa trên máy tính đều có một thư mục (Folder) chính được gọi là thư mục gốc chứa các tập tin trên đĩa. Nhưng để dễ dàng cho việc quản lý các tập tin, chúng ta có thể tạo thêm các thư mục con khác, lồng nhau, chứa các tập tin theo từng nhóm. - Một thư mục có thể rỗng hoặc có thể chứa các tập tin và các thư mục con. Khung phải cửa sổ hiển thị nội dung của mục được chọn trên khung trái - Nháy chuột trái vào ổ đĩa cần chọn bên khung trái để hiện nội dung của thư mục gốc bên khung phải. - Nháy chuột trái vào tên thư mục bên khung trái để hiện nội dung của thư mục đó bên khung phải. - Nháy chuột trái vào dấu trừ để thu gọn nhánh phân cấp thư mục con. Chú ý Dấu cộng bên cạnh cho biết ổ đĩa hay thư mục đó còn chứa các thư mục con. Thay đổi hình thức hiển thị trên khung phải Nháy chuột trái vào thực đơn View và chọn 1 trong 5 hình thức hiển thị: - Thumbnails: Thường dùng để xem trước các File hình. - Tiles: Hiện các tập tin và các thư mục con ở dạng biểu tượng lớn. - Icons: Hiện các tập tin và các thư mục con ở dạng biểu tượng nhỏ. - List: Hiện các tập tin và các thư mục con ở dạng liệt kê danh sách.
  • 9. 9 - Details: Liệt kê chi tiết các thông tin như tên (Name), kiểu (Type), kích thước lưu trữ (Size), ngày giờ tạo hay sửa (Modified). Hiện/ẩn cây thư mục trên khung trái Nháy chuột trái vào nút Folders để chọn hay bỏ chọn nút này trên thanh công cụ chuẩn. Sắp xếp dữ liệu bên khung phải Nháy chuột trái vào mục Arrange Icons by trên thực đơn View và chọn thứ tự sắp xếp - Theo tên: Name - Theo kích thước: Size - Theo phần mở rộng: Type - Theo ngày tháng tạo sửa: Modified Quản lý thư mục và tập tin Tạo một thư mục
  • 10. 10 - Mở thư mục muốn tạo thêm thư mục con trong đó. - Chọn mục thực đơn File | New | Folder (Chọn mục thực đơn Folder nằm trên thực đơn New, mà tên thực đơn New lại nằm trên thực đơn File) hoặc chọn Make a new folder bên khung trái. Một thư mục mới hiển thị với tên mặc định là New Folder. - Gõ tên thư mục mới (nếu muốn) và ấn phím Enter. Tạo Shortcut Shortcut là một tập tin liên kết đến một đối tượng, đối tượng đó có thể là tập tin, thư mục, ổ đĩa, máy in hay máy tính khác trên mạng. Shortcut là cách nhanh nhất để khởi động một chương trình được sử dụng thường xuyên hoặc để mở tập tin, thư mục mà không cần phải tìm đến nơi lưu trữ chúng. - Mở thư mục chứa tập tin cần tạo Shortcut. - Nháy chuột phải vào tập tin. - Chọn Create Shortcut: nếu tạo Shortcut ngay trong thư mục đang mở. - Chọn Send To | Desktop (create shortcut): nếu muốn tạo Shortcut trên màn hình Desktop. Đổi tên tập tin hay thư mục (Rename) - Mở ổ đĩa hay thư mục chứa tập tin hoặc thư mục con cần đổi tên. - Nháy chuột trái vào tên tập tin hay thư mục muốn đổi tên. - Chọn mục thực đơn File | Rename hoặc chọn Rename
  • 11. 11 this file hoặc Rename this folder bên khung trái. - Gõ tên mới, sau đó ấn phím Enter. Di chuyển một tập tin hoặc thư mục (Move) - Mở ổ đĩa hoặc thư mục chứa tập tin hay thư mục con cần di chuyển. - Nháy chuột trái vào tên tập tin hay thư mục muốn di chuyển. - Chọn mục thực đơn Edit | Move To Folder… hoặc chọn Move this file hay Move this folder bên khung trái. Hộp thoại Move Items xuất hiện. - Trong hộp thoại này, nháy chuột trái chọn ổ đĩa, thư mục muốn chuyển đến, sau đó nháy chuột trái vào nút Move. Sao chép một tập tin hay thư mục (Copy) - Mở ổ đĩa hay thư mục chứa tập tin hay thư mục con cần sao chép. - Nháy chuột trái vào tên tập tin hay thư mục muốn sao chép. - Chọn mục thực đơn Edit | Copy To Folder … hay chọn Copy this file hoặc Copy this folder. Hộp thoại Copy Items xuất hiện. - Trong hộp thoại này, nháy chuột trái chọn ổ đĩa, thư mục muốn chuyển đến, sau đó nháy chuột trái vào nút Copy. Xóa tập tin hay thư mục Khi xóa tập tin hay thư mục trong đĩa cứng, Windows sẽ di chuyển tập tin hay thư mục đó vào Thùng rác (Recycle Bin). Đây là thư mục của Windows dùng để chứa các tập tin bị xóa. Chúng ta có thể mở thư mục này để phục hồi lại hoặc xóa hẳn khỏi đĩa cứng. Nếu xóa dữ liệu trên đĩa mềm hay đĩa CD thì chúng không được chuyển vào thùng rác.
  • 12. 12 - Chọn tập tin hay thư mục cần xóa. - Chọn mục thực đơn File | Delete hoặc chọn mục Delete this file hay Delete this folder. - Windows Explorer sẽ hiển thị hộp thoại xác nhận xóa. Nháy chuột trái vào nút Yes để thực hiện hoặc vào nút No nếu không muốn thực hiện. Chú ý: - Chúng ta có thể nháy chuột phải vào đối tượng cần xóa và chọn mục Delete. Với cách xóa này bạn có thể phục hồi lại ngay bằng cách nháy chuột phải vào vùng trống bên khung phải và chọn mục Undo Delete. - Để xóa vĩnh viễn tập tin hay thư mục, chúng ta giữ phím Shift trong khi chọn mục Delete. Tìm kiếm tập tin hay thư mục (Search) - Nháy chuột trái vào nút Search trên thanh công cụ. - Nháy chuột trái vào mục All files and folders. - Nếu muốn tìm theo tên tập tin hay thư mục, hãy gõ đầy đủ hay một phần tên tập tin trong hộp All or part of file name. - Hoặc nếu muốn tìm theo nội dung tập tin hãy gõ một từ hay một cụm từ đại diện cần tìm trong hộp A word or phrase in the file. - Bạn có thể chỉ ra nơi cần tìm bằng cách nháy chuột trái vào mũi tên hướng xuống trong hộp Look in, sau đó chọn ổ đĩa hay thư mục mà cần tìm trong đó. - Nháy chuột trái vào nút Search. Chú ý: - Kết quả tìm kiếm sẽ hiện bên khung phải.
  • 13. 13 - Nếu có nhiều tập tin được tìm thấy, chúng ta có thể sử dụng những điều kiện bổ sung để lọc ra những tập tin cần thiết. Quản lý đĩa với My Computer - Chọn My Computer bên khung trái. - Để xem dung lượng và kích thước còn trống trên đĩa: Nháy chuột trái vào mục View | Details. 1.1.9. Tắt máy tính an toàn Nháy chuột trái lên nút Start, nháy chuột trái vào mục Turn Off Computer. Hộp thoại Turn off computer xuất hiện, nháy chuột trái vào nút Turn off. Chú ý - Chúng ta nên tắt hết các ứng dụng đang chạy trước khi tắt máy tính. - Nếu tắt máy trực tiếp bằng nút Power trên thân máy có thể gây ra những lỗi nghiêm trọng. - Nháy chuột trái vào nút Stand By trên hộp thoại Turn off computer sẽ đưa máy tính về chế độ chờ để tiết kiệm điện năng. - Nháy chuột trái vào nút Reset trên hộp thoại Turn off computer sẽ khiến máy khởi động lại. 1.2. Môi trường Turbo C++ 3.0 và ngôn ngữ C 1.2.1. Mục tiêu
  • 14. 14 - Khởi động và thoát chương trình TC. - Tạo một chương trình nguồn, soạn thảo, dịch và chạy chương trình. - Lưu một chương trình và mở một chương trình đã có. - Viết một số chương trình C đơn giản, làm quen với các kiểu dữ liệu nguyên, thực và các câu lệnh vào ra. 1.2.2. Yêu cầu lý thuyết Trong bài này, sinh viên cần nhớ lại những kiến thức cơ bản về ngôn ngữ C, bao gồm: - Cấu trúc của một chương trình viết trên ngôn ngữ C. - Cách đặt tên cho các biến. - Các lệnh vào ra. 1.2.3. Môi trường Turbo C++ 3.0 Môi trường Turbo C++ 3.0 (viết tắt là TC) là một chương trình cho phép tạo ra, dịch và thực hiện các chương trình viết bằng ngôn ngữ C. Để sử dụng chương trình TC, cần khởi động chương trình TC. - Chạy tập tin TC.EXE (thường ở trong thư mục C:TCBIN) bằng cách nháy kép chuột hoặc chọn tập tin rồi nhấn Enter. - Nếu TC mở sẵn các chương trình trước đó, chọn mục thực đơn Window | Close All để đóng chúng lại. - Để tạo một chương trình mới, chọn mục thực đơn File | New. - Để lưu chương trình vào ổ cứng, chọn mục thực đơn File | Save (hoặc nhấn F2). Hộp thoại Save File As xuất hiện. Trong phần Save File As trên hộp thoại thường đã chứa nội dung “C:TCBINNONAME00.CPP”, chúng ta hãy xóa “NONAME00.CPP” ở cuối đi và gõ thêm vào một tên chúng ta muốn đặt cho chương trình. Lưu ý, tên tập tin không được chứa quá 8 ký tự, không được chứa các ký tự trống và phải có tên mở rộng là “c”. Ví dụ, chúng ta có thể gõ vào một tên như: “C:TCBINTIMMAX.C”. Nháy chuột trái vào nút OK trên hộp thoại để hoàn thành công việc lưu chương trình. - Để mở chương trình đã có, chọn mục thực đơn File | Open (hoặc nhấn F3). Hộp thoại Open a File xuất hiện. Ở phần Name trên hộp thoại có thể chứa nội dung “*.CPP”, chúng ta hãy xóa hết và nhập lại với nội dung là “*.C” và nhấn Enter hoặc nháy chuột trái vào nút Open để ở cửa sổ Files phía dưới chỉ hiển thị các tập tin có tên mở rộng là “C”. Chọn tập tin cần mở rồi nháy chuột trái vào nút Open hoặc nháy kép vào tập tin cần mở để hoàn thành công việc mở chương trình. - Để phóng đại cửa sổ chương trình TC tới kích thước đầy màn hình, hoặc đưa cửa sổ từ kích thước đầy màn hình trở về kích thước thông thường chúng ta hãy nhấn và giữ phím Alt rồi nhấn phím Enter. - Để thoát khỏi TC, chọn mục thực đơn File | Quit (hoặc nhấn và giữ phím Alt rồi nhấn phím X). 1.2.4. Các bài tập mẫu Bài 1. Viết chương trình in ra màn hình dòng chữ “Chao mung den voi Turbo C++ 3.0” và dòng chữ thông báo “An phim Enter de thoat.” ở 2 dòng màn hình liên tiếp. Chương trình đợi người sử dụng nhấn 1 phím bất kỳ trên bàn phím để kết thúc.
  • 15. 15 Đây là chương trình đầu tiên, cơ bản nhất giúp sinh viên hiểu được cấu trúc cơ bản của một chương trình C. - Khởi động TC. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “chaomung.c”. - Soạn thảo chương trình như trong Error! Reference source not found. ở dưới. Lưu ý, chỉ số ở đầu các dòng chỉ dùng để tham chiếu, không đưa vào chương trình nguồn khi soạn thảo. - Lưu chương trình như miêu tả ở trên, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 1 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. printf("Chao mung den voi Turbo C++ 3.0"); 6. printf("nAn phim Enter de thoat."); 7. getch(); 8. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ chỉ thị #include <stdio.h> - Bỏ chỉ thị #include <conio.h> và câu lệnh getch() - Bỏ dấu n ở dòng 6 Bài 2.Viết chương trình thực hiện các công việc sau: - Nhập 2 số thực rồi tính và in ra màn hình tổng và tích của 2 số vừa nhập. - Nhập độ dài 2 cạnh góc vuông của 1 tam giác vuông rồi tính và in ra màn hình độ dài cạnh huyền của nó. - Nhập số thực dương r rồi tính và in ra màn hình chu vi và diện tích hình tròn bán kính r. Chương trình giúp hiểu về cú pháp khai báo biến và thực hiện các phép tính đơn giản. - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “expr.c”. - Soạn thảo chương trình như trong Chương trình 1. - Nhấn F2 để ghi chương trình, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 1 1. #include <stdio.h> 2. #include <conio.h> 3. #include <math.h> 4.
  • 16. 16 5. void main() 6. { 7. float a, b, w, h, r; 8. printf("Nhap hai so thuc a, b: "); 9. scanf("%f%f", &a, &b); 10. printf("Tong a + b = %fn", a + b); 11. printf("Tich a * b = %fn", a * b); 12. 13. printf("Nhap do dai hai canh goc vuong cua tam giac: "); 14. scanf("%f%f", &w, &h); 15. printf("Do dai canh huyen: %fn", sqrt(w*w + h*h)); 16. 17. printf("Nhap ban kinh duong tron: "); 18. scanf("%f", &r); 19. printf("Chu vi hinh tron: %fn", 2*M_PI*r); 20. printf("Dien tich hinh tron: %fn", M_PI*r*r); 21. 22. getch(); 23. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ chỉ thị #include <math.h> - Thay đổi %f%f thành %d%d ở dòng 9 - Bỏ các dấu & ở dòng 14 Bài 3. Viết chương trình hiển thị các số chính phương từ 12 đến 502 , mỗi dòng màn hình hiển thị 5 số chính phương. Chương trình giúp sinh viên hiểu sâu hơn về cách sử dụng hàm printf. - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “chphuong.c”. - Soạn thảo chương trình như trong Chương trình 2. - Nhấn F2 để ghi chương trình, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 2 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. int i, j; 6. for (i = 1; i <= 50; i++) 7. { 8. printf("%6d", i*i); 9. if (i % 5 == 0)
  • 17. 17 10. printf("n"); 11. } 12. getch(); 13. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay %6d thành %3d ở dòng 8 - Thay %6d thành %d ở dòng 8 - Thay %6d thành %10d ở dòng 8 - Thay lệnh ở dòng 8 bằng lệnh printf("%d ", i*i); - Thay lệnh ở dòng 8 bằng lệnh printf("%a ", i*i); - Bỏ các câu lệnh ở dòng 9, 10 1.2.5. Các bài tập tự làm Bài 1. Viết chương trình nhập từ bàn phím toạ độ của hai điểm trong mặt phẳng. Tính và đưa ra khoảng cách giữa hai điểm có toạ độ vừa nhập. Bài 2. Viết chương trình nhập từ bàn phím điểm và số tiết của ba môn học. Tính điểm trung bình ba môn học theo công thức tổng điểm của từng môn học nhân với số tiết, chia cho tổng số tiết.
  • 18. 18 Bài 2. Cơ bản về ngôn ngữ 2.1. Mục tiêu - Sử dụng các câu lệnh điều khiển. - Khai báo và sử dụng mảng. - Vào, ra và xử lý xâu ký tự. 2.2. Yêu cầu lý thuyết Sinh viên cần nắm vững những nội dung sau: - Cú pháp các câu lệnh if, for, while, break và continue. - Cú pháp khai báo mảng và truy cập phần tử mảng. - Khai báo xâu ký tự, nhập và in xâu ký tự. 2.3. Các bài tập mẫu Bài 1. Viết chương trình nhập một dãy số thực và in dãy số đó ra màn hình. Chương trình mẫu gồm việc nhập và in một dãy số, áp dụng cho các bài toán làm việc với dãy số. - Khởi động TC. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “dayso.c”. - Soạn thảo chương trình như trong Chương trình 3. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 3 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. float a[20]; 6. int n, i; 7. 8. printf("Nhap so phan tu: "); 9. scanf("%d", &n); 10. /* Nhap day so */ 11. for (i = 1; i <= n; i++) 12. { 13. printf("a[%d] = ", i); 14. scanf("%f", &a[i]); 15. } 16. /* In day so tren mot hang */ 17. printf("Day so vua nhap:n"); 18. for (i = 1; i <= n; i++) 19. printf("%10.3f", a[i]); 20. getch(); 21. } + Thực hiện chương trình và đánh giá kết quả.
  • 19. 19 + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ cặp ngoặc { } ở dòng 12, 15 - Bỏ lệnh printf("a[%d] = ", i); ở dòng 13 - Sửa câu lệnh printf("%10.3f", a[i]); thành printf("%8.2f", a[i]); ở dòng 19 Bài 2. Viết chương trình nhập số thực x rồi tính ex theo khai triển Taylor và in giá trị tính được ra màn hình: n x n xx xe !!2 1 2 ++++= K Khai triển dừng ở giá trị nguyên dương n sao cho 6 10 ! − < n xn Bài này giúp sinh viên hiểu về cách sử dụng vòng lặp while. - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “luythua.c”. - Soạn thảo chương trình như trong Chương trình 4. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 4 1. #include <stdio.h> 2. #include <conio.h> 3. #include <math.h> 4. 5. void main() 6. { 7. float x, lt, gt, eps, s; 8. int i; 9. printf("Nhap x: "); 10. scanf("%f", &x); 11. lt = 1.0; 12. gt = 1.0; 13. s = 0; 14. i = 0; 15. eps = lt/gt; 16. while (fabs(eps) >= 1e-6) 17. { 18. s+= eps; 19. i++; 20. lt*= x; 21. gt*= i; 22. eps= lt/gt; 23. } 24. printf("e^%0.3f = %f", x, s);
  • 20. 20 25. getch(); 26. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay đổi giá trị 10e-6 ở dòng 16 thành 0.001 - Bỏ dòng lệnh 13 - Thay đổi thứ tự các câu lệnh từ 18 đến 21 Bài 3. Viết chương trình nhập rồi in địa chỉ của một người nào đó. Bài này giúp sinh viên hiểu cách nhập và xuất xâu ký tự, cách in xâu ký tự. - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “diachi.c”. - Soạn thảo chương trình như trong Chương trình 5. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. CHƯƠNG TRÌNH 5 1. #include <stdio.h> 2. #include <conio.h> 3. 4. void main() 5. { 6. char name[30]; 7. int number; 8. char street[50]; 9. char district[30]; 10. char city[30]; 11. 12. 13. printf("Ho va ten: "); 14. fflush(stdin); gets(name); 15. 16. printf("So nha: "); 17. scanf("%d", &number); 18. 19. printf("Pho: "); 20. fflush(stdin); gets(street); 21. 22. printf("Quan: "); 23. fflush(stdin); gets(district); 24. 25. printf("Thanh pho: "); 26. fflush(stdin); gets(city); 27. 28. printf("Dia chi cua ban:n");
  • 21. 21 29. printf("%snSo %d pho %s quan %snThanh pho %s", 30. name, number, street, district, city); 31. getch(); 32. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ câu lệnh fflush(stdin) ở dòng 20 - Sửa dòng 29 để được các cách in ra khác nhau, ví dụ sửa từ So thành So nha - Thay đổi dòng 14 bằng lệnh scanf("%s", name); 2.4. Các bài tập tự làm Bài 1. Nhập một dãy số nguyên, tính và in ra trung bình cộng của các phần tử. In ra bình phương của các số trên một dòng. Bài 2. Tính giá trị biểu thức: Với độ chính xác .
  • 22. 22 Bài 3. Một số thuật toán cơ bản 3.1. Mục tiêu - Thực hiện thuật toán tính tổng - Thực hiện thuật toán đếm - Thực hiện thuật toán tính trung bình cộng - Thực hiện thuật toán tìm giá trị lớn nhất và giá trị nhỏ nhất. - Thực hiện thuật toán sắp xếp. 3.2. Yêu cầu lý thuyết Sinh viên cần nắm vững những nội dung sau: - Các thuật toán đã được giới thiệu trong phần 1 của chương trình học. - Mảng một chiều. - Các câu lệnh điều khiển. 3.3. Các bài tập mẫu Bài 1. Viết chương trình thực hiện: - Nhập một dãy số nguyên. - In dãy số đã nhập ra màn hình. - Tính và in ra tổng các số chẵn của dãy số. Thực hiện: - Khởi động TC. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “tongchan.c”. - Soạn thảo chương trình như trong Chương trình 6. - Nhấn F2 để ghi chương trình, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 6 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. int a[20]; 6. int n, i, T; 7. 8. printf("Nhap so phan tu: "); 9. scanf("%d", &n); 10. for (i = 1; i <= n; i++) 11. { 12. printf("a[%d] = ", i); 13. scanf("%d", &a[i]); 14. } 15. 16. /* Tinh tong cac phan tu chan */ 17. T = 0;
  • 23. 23 18. for (i = 1; i <= n; i++) 19. if (a[i] % 2 == 0) 20. T = T + a[i]; 21. printf("Tong cac phan tu chan = %dn", T); 22. 23. printf("Day so vua nhap:n"); 24. for (i = 1; i <= n; i++) 25. printf("%6d", a[i]); 26. getch(); 27. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ dòng lệnh 17 - Đưa dòng 19, 20, 21 vào một khối lệnh - Thay đổi câu lệnh ở dòng 25 bằng lệnh printf("%d", a[i]); Bài 2. Viết chương trình thực hiện: - Nhập các hệ số của một đa thức P. - Nhập số thực x rồi tính và in giá trị của đa thức P(x) ra màn hình. Thực hiện: - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “poly.c”. - Soạn thảo chương trình như trong Chương trình 8. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 8 1. #include <stdio.h> 2. #include <conio.h> 3. 4. void main() 5. { 6. float a[20]; 7. int n, i; 8. float p, x, f; 9. 10. /* Nhap da thuc */ 11. printf("Bac da thuc: "); 12. scanf("%d", &n); 13. for (i = n; i >= 0; i--) 14. { 15. printf("a%d = ", i); 16. scanf("%f", &a[i]); 17. }
  • 24. 24 18. 19. printf("Nhap x: "); 20. scanf("%f", &x); 21. p = 0; 22. f = 1; 23. for (i = 0; i <= n; i++) 24. { 25. p+= a[i]*f; 26. f*= x; 27. } 28. printf("Gia tri da thuc: %f", p); 29. getch(); 30. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay câu lệnh ở dòng 13 bằng câu lệnh for (i = 0; i <= n; i++) - Hãy đưa ra một cách khác tính giá trị đa thức (nếu có thể) Bài 3. Viết chương trình thực hiện: - Nhập một dãy số thực. - In dãy số đã nhập ra màn hình. - Đếm số phần tử có giá trị nằm trong đoạn [10, 20]. Thực hiện: - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “dem.c”. - Soạn thảo chương trình như trong Chương trình 9. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 9 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. float a[20]; 6. int n, i, d; 7. 8. printf("Nhap so phan tu: "); 9. scanf("%d", &n); 10. for (i = 1; i <= n; i++) 11. { 12. printf("a[%d] = ", i); 13. scanf("%f", &a[i]); 14. }
  • 25. 25 15. 16. /* Dem so phan tu co gia tri nam trong doan [10, 20]*/ 17. d = 0; 18. for (i = 1; i <= n; i++) 19. if ((a[i] >= 10) && (a[i] <= 20)) 20. d = d + 1; 21. printf("n So phan tu thoa man dieu kien = %4d", d); 22. 23. printf("n Day so vua nhap:n"); 24. for (i = 1; i <= n; i++) 25. printf("%10.3f", a[i]); 26. getch(); 27. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ dòng lệnh 17 - Đưa lệnh 19, 20, 21 vào một khối lệnh Bài 3. Viết chương trình thực hiện: - Nhập một dãy số nguyên. - In dãy số vừa nhập ra màn hình. - Tìm và in ra giá trị phần tử lớn nhất của dãy. Thực hiện: - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “max.c”. - Soạn thảo chương trình như trong Chương trình 10. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 10 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. int n, i; 6. int a[20], max; 7. 8. printf("Nhap so phan tu: "); 9. scanf("%d", &n); 10. for (i = 1; i <= n; i++) 11. { 12. printf("a[%d] = ", i); 13. scanf("%d", &a[i]); 14. }
  • 26. 26 15. 16. /* Tim gia tri max */ 17. max = a[1]; 18. for (i = 2; i <= n; i++) 19. if (a[i] > max) 20. max = a[i]; 21. printf("Gia tri lon nhat: %4dn", max); 22. 23. printf("Day so vua nhap:n"); 24. for (i = 1; i <= n; i++) 25. printf("%6d", a[i]); 26. getch(); 27. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay lệnh ở dòng 17 bằng lệnh max = 0; - Đưa các dòng lệnh 19, 20, 21 vào khối lệnh - Thay đổi dòng lệnh 19 bằng if (a[i] >= max) Bài 4. Viết chương trình thực hiện: - Nhập một dãy số thực. - In dãy số vừa nhập ra màn hình. - Sắp xếp dãy số theo thứ tự tăng dần. - In dãy số đã sắp xếp ra màn hình. Thực hiện: - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “sapxep.c”. - Soạn thảo chương trình như trong Chương trình 11. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 11 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. int n, i, j; 6. float a[20], tg; 7. 8. printf("Nhap so phan tu: "); 9. scanf("%d", &n); 10. for (i = 1; i <= n; i++) 11. {
  • 27. 27 12. printf("a[%d] = ", i); 13. scanf("%f", &a[i]); 14. } 15. 16. printf("Day so truoc khi sap xep:n"); 17. for (i = 1; i <= n; i++) 18. printf("%7.2f", a[i]); 19. 20. /* Sap xep day so theo thu tu tang dan */ 21. for (i = 1; i <= n - 1; i++) 22. for (j = i + 1; j <= n; j++) 23. if (a[i] > a[j]) 24. { 25. tg = a[i]; 26. a[i] = a[j]; 27. a[j] = tg; 28. } 29. 30. printf("nDay so sau khi sap xep:n"); 31. for (i = 1; i <= n; i++) 32. printf("%7.2f", a[i]); 33. getch(); 34. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay lệnh ở dòng 21 bằng lệnh for (i = 1; i <= n; i++); - Bỏ cặp ngoặc ở các dòng 24 và 28 - Thay lệnh ở dòng 23 bằng lệnh if (a[i] < a[j]) 3.4. Các bài tập tự làm Bài 1. Nhập dãy số nguyên a1, a2,..., an. Hãy đếm xem trong dãy có bao nhiêu phần tử có giá trị chia cho 7 dư 1 hoặc 3? Tính trung bình cộng các phần tử có giá trị chẵn và nhỏ hơn 50? Tìm một phần tử lẻ có giá trị nhỏ nhất? In ra màn hình dãy số đã nhập và các đại lượng tính được ở trên. Bài 2. Nhập dãy số thực a1, a2,..., an. Hãy đếm xem trong dãy có bao nhiêu cặp 2 phần tử liên tiếp mà phần tử đứng sau có giá trị lớn hơn phần tử đứng trước? Tính tổng các phần tử có giá trị không thuộc đoạn [-10, 20]? Tìm giá trị và vị trí của một phần tử có giá trị nhỏ nhất? In ra màn hình dãy số đã nhập và các đại lượng tính được ở trên. Bài 3. Nhập số thực r và toạ độ của n điểm trên mặt phẳng xOy. Hãy đếm số điểm nằm bên trong nửa đường tròn tâm O(0, 0) bán kính r và nằm bên trái trục Oy? Đếm số điểm không thuộc góc III của hệ trục toạ độ xOy? Tính diện tích của hình chữ nhật nhỏ nhất có các cạnh song song với các trục tọa độ và chứa tất cả các điểm đã nhập? In ra màn hình toạ độ các điểm đã nhập và các đại lượng tính được ở trên.
  • 28. 28 Bài 4. Nhập toạ độ của n điểm trên mặt phẳng xOy. Hãy tính diện tích hình tròn nhỏ nhất tâm ở gốc tọa độ O(0, 0) chứa tất cả các điểm trên? Tính tổng độ dài các đoạn thẳng nằm trong góc IV của hệ trục toạ độ xOy? In ra màn hình toạ độ các điểm đã nhập và các đại lượng tính được ở trên. Bài 5. Nhập hai đa thức P, Q và hai số thực u, v. - Tính giá trị P(u) – Q(v). - Đưa ra các hệ số của đa thức tổng P(x) + Q(x).
  • 29. 29 Bài 4. Ma trận 4.1. Mục tiêu - Khai báo và truy cập các phần tử ma trận. - Nhập ma trận và in ma trận dưới dạng bảng. - Thao tác với ma trận. 4.2. Yêu cầu lý thuyết Sinh viên cần nắm vững những phần nội dung sau: - Cú pháp khai báo và truy cập phần tử mảng hai chiều. - Các lệnh for lồng nhau. - Kiến thức toán học về ma trận. 4.3. Các bài tập mẫu Bài 1. Viết chương trình thực hiện: - Nhập một ma trận thực. - In ma trận ra màn hình dưới dạng bảng. - Tính và in ra màn hình tổng các hàng của ma trận và giá trị lớn nhất của chúng. Thực hiện: - Khởi động TC. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “matrix.c”. - Soạn thảo chương trình như trong Chương trình 12. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 12 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. { 5. float a[50][50], sum[50]; 6. int m, n, i, j; 7. float max, tmp; 8. 9. /* Nhap ma tran */ 10. printf("Nhap kich co ma tran: "); 11. scanf("%d%d", &m, &n); 12. for (i = 1; i <= m; i++) 13. for (j = 1; j <= n; j++) 14. { 15. printf("a[%d][%d] = ", i, j); 16. scanf("%f", &tmp); 17. a[i][j] = tmp; 18. } 19. 20. /* In ma tran duoi dang bang */
  • 30. 30 21. printf("Ma tran vua nhap:n"); 22. for (i = 1; i <= m; i++) 23. { 24. for (j = 1; j <= n; j++) 25. printf("%8.2f", a[i][j]); 26. printf("n"); 27. } 28. /* In tong hang va tong lon nhat */ 29. for (i = 1; i <= m; i++) 30. { 31. sum[i] = 0; 32. for (j = 1; j <= n; j++) 33. sum[i] += a[i][j]; 34. 35. printf("Tong hang %d: %fn", i, sum[i]); 36. } 37. max = sum[1]; 38. for (i = 2; i <= m; i++) 39. if (max < sum[i]) 40. max = sum[i]; 41. printf("Tong hang lon nhat: %f", max); 42. 43. getch(); } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay dòng 16, 17 bằng lệnh scanf("%f", &a[i][j]); - Hoán đổi vị trí 2 dòng 35 và 36 - Thay vì tính tổng các dòng, tính tổng các cột và đưa ra tổng lớn nhất Bài 2. Viết chương trình thực hiện: - Nhập một ma trận nguyên vuông. - In ma trận ra màn hình dưới dạng bảng. - Kiểm tra xem ma trận vừa nhập có phải là ma trận tam giác trên hay không (Ma trận tam giác trên là ma trận có tất cả các phần tử nằm phía dưới đường chéo chính đều bằng 0). Thực hiện: - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là “matrix2.c”. - Soạn thảo chương trình như trong Chương trình 13. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 13 1. #include <stdio.h> 2. #include <conio.h> 3. void main() 4. {
  • 31. 31 5. int a[50][5], n, i, j, d; 6. clrscr(); /* Xoa man hinh */ 7. printf("Nhap kich thuoc ma tran: "); 8. scanf("%d", &n); 9. /* Nhap ma tran */ 10. for (i = 1; i <= n; i++) 11. for (j = 1; j <= n; j++) 12. { 13. printf("nNhap a[%d][%d]: ", i, j); 14. scanf("%d", &a[i][j]); 15. } 16. /* In ma tran duoi dang bang */ 17. printf("nnMa tran vua nhap duoi dang bangn"); 18. for (i = 1; i <= n; i++) 19. { 20. for (j = 1; j <= n; j++) 21. printf("%5d ", a[i][j]); 22. printf("n"); 23. } 24. /* Dem so phan tu khac 0 nam duoi duong cheo chinh */ 25. d = 0; 26. for (i = 2; i <= n; i++) 27. for (j = 1; j < i; j++) 28. if (a[i][j] != 0) 29. d++; 30. /* Ket luan */ 31. if (d == 0) 32. printf("nnMa tran la ma tran tam giac tren"); 33. else 34. printf("nnMa tran khong la ma tran tam giac tren"); 35. getch(); 36. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thực hiện phần chương trình "Dem so phan tu khac 0 nam duoi duong cheo chinh" (từ dòng 24 đến dòng 29) bằng cách khác. - Giải quyết bài toán bằng cách khác mà không cần đếm số lượng phần tử khác 0 nằm phía dưới đường chéo chính (Gợi ý: Có thể sử dụng câu lệnh break;). 4.4. Các bài tập tự làm Bài 1. Nhập một ma trận thực. Tính tổng tất cả các phần tử của ma trận và tìm giá trị lớn nhất của chúng. Bài 2. Nhập một ma trận thực M cấp m×n. In ma trận MT ra màn hình dưới dạng bảng (Ma trận MT là ma trận thực cấp n×m mà MT [i][j] = M[j][i], với 1 ≤ i ≤ n, 1 ≤ j ≤ m).
  • 32. 32 Bài 5. Cấu trúc 5.1. Mục tiêu - Định nghĩa cấu trúc và khai báo biến, mảng cấu trúc. - Nhập dữ liệu cho một danh sách các cấu trúc. - In ra các thông tin trong một danh sách các cấu trúc. 5.2. Yêu cầu lý thuyết Sinh viên cần nắm vững những phần nội dung sau: - Khái niệm cấu trúc và cú pháp định nghĩa cấu trúc - Truy cập các trường của cấu trúc - Cú pháp khai báo mảng cấu trúc - Từ khoá typedef 5.3. Các bài tập mẫu Bài 1. Viết chương trình thực hiện: - Định nghĩa một cấu trúc lưu thông tin về nhân viên, gồm các trường: họ tên, địa chỉ và mức lương. - Nhập các thông tin của một nhân viên nào đó. - In ra màn hình các thông tin vừa nhập. Thực hiện: - Khởi động TC. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là "nhanvien.c". - Soạn thảo chương trình như trong Chương trình 14. Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 14 1. #include <stdio.h> 2. #include <conio.h> 3. 4. struct nhanvien { 5. char hoten[30]; 6. char diachi[50]; 7. float luong; 8. }; 9. 10. void main() 11. { 12. struct nhanvien nv; 13. printf("Nhap thong tin nhan vienn"); 14. printf("Ho va ten: "); 15. fflush(stdin); gets(nv.hoten); 16. printf("Dia chi: "); 17. fflush(stdin); gets(nv.diachi);
  • 33. 33 18. printf("Muc luong: "); 19. scanf("%f", &nv.luong); 20. 21. printf("Thong tin nhan vien vua nhapn"); 22. printf("Ho va ten: %sn", nv.hoten); 23. printf("Dia chi: %sn", nv.diachi); 24. printf("Luong: %f", nv.luong); 25. 26. getch(); 27. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Bỏ từ khoá struct ở dòng 12 - Thêm các trường mã nhân viên và tuổi vào cấu trúc lưu thông tin nhân viên Bài tập 2. Viết chương trình thực hiện: - Nhập vào một danh sách các sinh viên, mỗi sinh viên gồm các thông tin: họ tên, mã sinh viên, điểm trung bình. - Hiển thị danh sách các sinh viên vừa nhập. - Sắp xếp danh sách theo chiều giảm dần của điểm trung bình và in ra 3 thí sinh có điểm trung bình cao nhất. Thực hiện: - Vào Windows | Close All để đóng các cửa sổ đang mở. - Vào File | New để tạo một chương trình mới. - Lưu chương trình với tên là "sinhvien.c". - Soạn thảo chương trình như trong Chương trình 15. - Nhấn F2 để ghi, nhấn Ctrl + F9 để thực hiện chương trình. Chương trình 15 1. #include <stdio.h> 2. #include <conio.h> 3. 4. typedef struct { 5. char hoten[30]; 6. char masv[15]; 7. float diem; 8. } sinhvien; 9. 10. void main() 11. { 12. sinhvien ds[10], tg; 13. int n, i, j; 14. 15. printf("So sinh vien: "); 16. scanf("%d", &n);
  • 34. 34 17. 18. for (i = 1; i <= n; i++) 19. { 20. printf("Nhap thong tin sinh vien thu %dn", i); 21. printf("Ho va ten: "); 22. fflush(stdin); gets(tg.hoten); 23. printf("Ma sinh vien: "); 24. fflush(stdin); gets(tg.masv); 25. printf("Diem trung binh: "); 26. scanf("%f", &tg.diem); 27. ds[i] = tg; 28. } 29. 30. printf("nDanh sach sinh vien vua nhap:n"); 31. printf("%-3s %-25s %-10s %-6sn", 32. "STT", "Ho va ten", "Ma SV", "Diem"); 33. printf("------------------------------------------n"); 34. 35. for (i = 1; i <= n; i++) 36. printf("%-3d %-25s %-10s %-6.2fn", 37. i, ds[i].hoten, ds[i].masv, ds[i].diem); 38. 39. /* Sap xep giam dan cua diem trung binh */ 40. for (i = 1; i < n; i++) 41. for (j = i + 1; j <= n; j++) 42. if(ds[i].diem < ds[j].diem) 43. { 44. tg = ds[i]; 45. ds[i] = ds[j]; 46. ds[j] = tg; 47. } 48. 49. printf("nDanh sach 3 sinh vien co diem cao nhat:n"); 50. printf("%-3s %-25s %-10s %-6sn", 51. "STT", "Ho va ten", "Ma SV", "Diem"); 52. printf("------------------------------------------n"); 53. 54. for (i = 1; (i <= 3) && (i <= n); i++) 55. printf("%-3d %-25s %-10s %-6.2fn", 56. i, ds[i].hoten, ds[i].masv, ds[i].diem); 57. 58. getch(); 59. } + Thực hiện chương trình và đánh giá kết quả. + Thử một vài thay đổi đối với chương trình. Với mỗi thay đổi, chạy và nhận xét kết quả thu được, sau đó khôi phục chương trình mẫu: - Thay lệnh ở dòng 27 bằng lệnh: tg = ds[i];
  • 35. 35 - Thêm vào chương trình chức năng hiển thị tất cả các sinh viên có điểm trung bình cao nhất. 5.4. Các bài tập tự làm Bài 1. Định nghĩa một cấu trúc mô tả thông tin về một khách mua hàng, gồm các trường: - Họ tên - Địa chỉ - Số điện thoại - Tên mặt hàng khách đặt mua - Số lượng - Ngày giao hàng Nhập thông tin cho một khách hàng và đưa ra các thông tin vừa nhập. Bài 2. Định nghĩa cấu trúc mô tả thông tin về sách trong thư viện, gồm các trường: - Mã sách - Tên sách - Tác giả - Năm xuất bản - Số trang Nhập một danh sách các cuốn sách, hiển thị ra màn hình danh sách các cuốn sách theo thứ tự tên của chúng trong bảng chữ cái.