Microsoft Word CQ NMLT HDTH Tuan08 docx TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM HỆCHÍNH QUI MÔN NHẬP MÔN LẬP TRÌNH GVLT ThS PHẠM MINH TUẤN HDTH TUẦN[.]
Trang 1BỘ MÔN CÔNG NGHỆ PHẦN MỀM
HỆCHÍNH QUI
MÔN: NHẬP MÔN LẬP TRÌNH
GVLT: ThS PHẠM MINH TUẤN
HDTH TUẦN 08
PHẠM TÚ SAN
TRẦN NGỌC HIỆU
TP.HCM, tháng 12 năm 2012
Trang 2chuỗi (ký tự cuối cùng trong chuỗi là ‘\0’)
2.1.1 Vấn đề nhập xuất
- Đoạn code sau đây minh họa việc nhập và xuất chuỗi:
- Chạy thử:
Trang 3- Cách nhập chuỗi này có 2 nhược điểm:
o Bị lỗi khi nhập quá số ký tự khai báo:
o Không nhập được chuỗi có khoảng trắng:
Trang 4- Nếu sử dụng gets:
- Nhập được chuỗi có khoảng trắng:
Trang 5- Nhưng vẫn bị lỗi không kiểm soát số lượng ký tự:
- Chuyển sang xài hàm fgets:
- Giải quyết được 2 lỗi ở trên
Trang 6- Lưu ý:
- Sửa lại:
Trang 7- Vấn đề tràn bộ đệm Giả sử có đoạn code sau:
- Chạy thử ko nhập được chuỗi, “bị trôi qua”
Trang 8- Chỉnh lại: Đặt lệnh fflush(stdin) trước mỗi dòng đọc chuỗi
- Kết quả:
Trang 9- Vấn đề:
o Chuỗi str1 chứa luôn kí tự ‘\n’
- Giải quyết: viết hàm fget riêng:
- Kết quả:
- Đoạn code hàm fgets:
Trang 102.1.2 Các hàm thao tác trên chuỗi
- Giả sử có đoạn code sau:
- Kết quả:
Trang 11- Lưu ý:
o strlen: lấy chiều dài chuỗi
o strcat: nối chuỗi 2 vào sau chuỗi 1 giá trị ban đầu chuỗi 1 vẫn giữ
o strcpy: copy chuỗi 2 vào chuỗi 1 giá trị ban đầu chuỗi 1 bị mất
- So sánh chuỗi sử dụng hàm strcmp
- Kết quả:
Trang 12- Giải pháp: sử dụng hàm stricmp
Trang 13- Biến đổi chuỗi:
- Đoạn code:
Trang 14- Do hàm toupper có sẵn chỉ biến đổi được 1 char 1 lần tự viết hàm toupper
2.2 Struct
- Phân số có 2 thành phần tử số và mẫu số muốn lưu thành 1 biến định nghĩa ra kiểu dữ liệu mới dùng cú pháp struct
- Khai báo struct và các hàm trong file h Ví dụ: struct PhanSo file PhanSo.h
Trang 15- File PhanSo.cpp viết code định nghĩa các hàm xử lý:
Trang 16- File main.cpp sử dụng hàm và struct
- Lưu ý:
o Dùng scanf để nhập struct là sai
Trang 17o Dùng printf để xuất struct là sai
- Sử dụng đúng:
Trang 18- So sánh hai phân số:
- Kết quả:
3 Bài tập
3.1 Bài 01
- Khai báo struct PhanSo với 2 thành phần tử số và mẫu số cùng các hàm xử lý:
1 Nhập phân số
Trang 192 Xuất phân số
3 Rút gọn
4 Cộng hai phân số
5 Trừ hai phân số
6 Nhân hai phân số
7 Chia hai phân số
8 So sánh hai phân số
9 Kiểm tra phân số có tối giản hay không?
10 Xét dấu phân số (âm, bằng 0, dương)
3.2 Bài 02
- Khai báo struct Diem với 2 thành phần x, y cùng các hàm xử lý:
1 Nhập điểm
2 Xuất điểm
3 Tính khoảng cách 2 điểm
4 Tìm điểm đối xứng với điểm đã cho qua trục Ox, Oy, gốc tọa độ
3.3 Bài 03
- Khai báo struct TamGiac với 3 thành phần điểm A, B, C cùng các hàm xử lý:
1 Nhập tam giác
2 Xuất tam giác
3 Tìm chu vi tam giác
4 Tính diện tích tam giác
5 Tìm trọng tâm tam giác
6 Xét loại tam giác
7 Tính tổng khoảng cách từ 1 điểm P đến 3 đỉnh của tam giác
3.4 Bài 04
- Khai báo struct Ngay với 3 thành phần ngày, tháng, năm cùng các hàm xử lý:
1 Nhập ngày
2 Xuất ngày theo định dạng ngày/tháng.năm
3 Kiểm tra năm nhuận
4 Tính số ngày trong tháng
5 Tìm ngày kế tiếp
6 Tìm ngày trước đó
7 So sánh 2 ngày
8 Tính số thứ tự của ngày trong năm
Trang 204 Qui định
Các bài tập làm chung trong một solution Tên solution là MSSV của bạn
Mỗi bài là một project Tên project lần lượt là Bai01, Bai02, …
Nộp bài: Xóa các thư mục Debug, Release, file *.sdf (nếu có), nén thư mục chứa solution thành file có tên dạng <MSSV>.rar hoặc <MSSV>.zip