Tải bản đầy đủ (.pdf) (20 trang)

Cq nmlt hdth tuan08

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (765.42 KB, 20 trang )

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 08
PHẠM TÚ SAN
TRẦN NGỌC HIỆU

TP.HCM, tháng 12 năm 2012


ptsan/

1 Mục tiêu
-

Làm quen với kiểu dữ liệu chuỗi trong C/C++
Làm quen với struct trong C/C++

2 Nội dung
(tham khảo tài liệu HDTH thầy Hồ Tuấn Thanh)

2.1 Chuỗi
-

Chuỗi trong C/C++ là một mảng một chiều các ký tự (character), có ký tự kết thúc
chuỗi (ký tự cuối cùng trong chuỗi là ‘\0’)


2.1.1Vấ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 2


ptsan/

-

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 3


ptsan/

-

Nếu sử dụng gets:


-

Nhập được chuỗi có khoảng trắng:

Trang 4


ptsan/
-

Nhưng vẫn bị lỗi khơng kiểm số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 5


ptsan/

-

Lưu ý:

-


Sửa lại:

Trang 6


ptsan/

-

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 7


ptsan/

-

Chỉnh lại: Đặt lệnh fflush(stdin) trước mỗi dòng đọc chuỗi

-

Kết quả:

Trang 8



ptsan/
-

Vấn đề:
o Chuỗi str1 chứa ln kí tự ‘\n’

-

Giải quyết: viết hàm fget riêng:

-

Kết quả:

-

Đoạn code hàm fgets:
Trang 9


ptsan/

2.1.2Các hàm thao tác trên chuỗi
-

Giả sử có đoạn code sau:

-


Kết quả:

Trang 10


ptsan/

-

-

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 11


ptsan/

-

Tuy nhiên:

o Phân biệt chữ hoa chữ thường

-

Giải pháp: sử dụng hàm stricmp

Trang 12


ptsan/

-

Biến đổi chuỗi:

-

Đoạn code:

Trang 13


ptsan/

-

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 14


ptsan/

-

File PhanSo.cpp  viết code định nghĩa các hàm xử lý:

Trang 15


ptsan/

-

File main.cpp  sử dụng hàm và struct
Lưu ý:
o Dùng scanf để nhập struct là sai

Trang 16


ptsan/


o Dùng printf để xuất struct là sai

-

Sử dụng đúng:

Trang 17


ptsan/
-

Kết quả:

-

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 18



ptsan/
2. 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 19


ptsan/

3.5 Bài 05
-

Khai báo struct SinhVien với các thành phần MSSV (chuỗi), họ tên, ngày sinh
(Ngay),số CMND, địa chỉ, điểm thực hành, điểm lý thuyết cùng các hàm xử lý:
1. Nhập thông tin sinh viên
2. Xuất thông tin sinh viên
3. Tính điểm trung bình
4. Xếp loại sinh viên (Xuất sắc, giỏi, khá, trung bình, yếu, kém)

5. Tính tuổi sinh viên

4 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.

Trang 20



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×