Trong bài này chúng ta tiếp tục thực hành các bài tập C, việc thực hành nhiều sẽ giúp các bạn củng cố kĩ năng và nâng cao tư duy lập trình.
Bài 19 phần 3 trong Serie Lập trình C từ A tới Z
Bài tập C về Struct (cấu trúc)
Đọc, in tên và thông tin khác của sinh viên bởi sử dụng struct
Yêu cầu bài tập C là sử dụng Struct trong C tạo cấu trúc sinh viên gồm các thông tin: tên sinh viên, mã sinh viên và tên môn học. Nhập thông tin các sinh viên và sau đó in các thông tin này trên màn hình.
Đây là bài tập C cơ bản giúp bạn hiểu cách sử dụng Struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập đọc in tên sinh viên bởi sử dụng Struct trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Sắp xếp mảng các struct
Yêu cầu bài tập C là sử dụng Struct để nhập thông tin các thành phố khác nhau. Mỗi thành phố (state) có: tên thành phố (name), tổng thu nhập (income), dân số (population), tỉ lệ biết đọc viết (literacyRate). Sau đó hiển thị thành phố có tổng thu nhập cao nhất, có tỉ lệ biết đọc viết cao nhất.
Để giải bài tập này chúng ta cần sắp xếp mảng các Struct trong C. Dưới đây là chương trình C minh họa.
Chương trình C
Dưới đây là chương trình C để giải bài tập sắp xếp mảng các Struct trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Sử dụng struct bên trong union và hiển thị nội dung các phần tử của struct
Yêu cầu bài tập C là tạo một Struct bên trong Union, và sau đó hiển thị nội dung của các phần tử trong Struct. Giả sử chúng ta tạo một Struct bao gồm thông tin các sinh viên sau: tên sinh viên (name), giới tính (sex), mã sinh viên (rollno), và điểm thi (mark). Dưới đây là chương trình C minh họa cách sử dụng Struct bên trong Union trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập sử dụng Struct bên trong Union trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kích cỡ của struct
Để tìm kích cỡ của Struct chúng ta sử dụng toán tử sizeof() trong C. sizeof là một toán tử chứ KHÔNG phải một hàm trong C. Toán tử sizeof này nhận một tham số là bất kỳ biến nào và trả về kích cỡ của biến đó.
Giả sử một Struct sinh viên gồm: tên sinh viên (name), mã sinh viên (roll), điểm thi (mark) thì ta sẽ có:
Kích cỡ của Struct = sizeof(roll) + sizeof(name) + sizeof(mark)
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kích cỡ của Struct trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Sắp xếp các struct dựa vào phần tử struct và sau đó hiển thị thông tin
Giả sử một giải đấu thể thao sinh viên đấu vòng tròn có 10 sinh viên tham gia. Mỗi sinh viên thuộc một đội khác nhau và sinh viên có các thông tin: tên đội (tname), tên sinh viên (pname), điểm số (avg). Khai báo một mảng các sinh viên. Yêu cầu là hãy sắp xếp các sinh viên này dựa trên bất kỳ tiêu chí nào ở trên (ví dụ sắp xếp theo tên đội, tên sinh viên hoặc điểm số đạt được).
Chương trình C
Dưới đây là chương trình C để giải bài tập sắp xếp các Struct dựa vào bất kỳ phần tử nào của Struct trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Bài tập C về Danh sách liên kết (Linked List)
Tạo danh sách liên kết
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tạo danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Hiển thị danh sách liên kết theo chiều đảo ngược
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách hiển thị danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập hiển thị danh sách liên kết theo chiều đảo ngược trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kích cỡ của danh sách liên kết
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách tìm kích cỡ của danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kích cỡ của danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kiếm một phần tử trong danh sách liên kết
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách tìm kiếm một phần tử trong danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kiếm một phần tử trong danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Cập nhật một phần tử của danh sách liên kết
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách cập nhật một phần tử của danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập cập nhật một phần tử của danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Xóa một phần tử từ danh sách liên kết
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách xóa một phần tử từ danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập xóa một phần tử từ danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Nối hai danh sách liên kết
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách nối hai danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập nối hai danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Chia một danh sách liên kết thành hai
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đơn và cách chia một danh sách liên kết đơn trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập chia một danh sách liên kết đơn trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tạo danh sách liên kết vòng
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tạo danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Hiển thị danh sách liên kết vòng theo chiều đảo ngược
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách hiển thị danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập hiển thị danh sách liên kết vòng theo chiều đảo ngược trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kích cỡ của danh sách liên kết vòng
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách tìm kích cỡ của danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kích cỡ của danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kiếm một phần tử trong danh sách liên kết vòng
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách tìm kiếm phần tử trong danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kiếm phần tử trong danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Cập nhật một phần tử của danh sách liên kết vòng
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách cập nhật một phần tử của danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập cập nhật một phần tử của danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Xóa một phần tử từ danh sách liên kết vòng
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách xóa một phần tử từ danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập xóa một phần tử từ danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Nối hai danh sách liên kết vòng
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách nối hai danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập nối hai danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Chia một danh sách liên kết vòng thành hai
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết vòng và cách chia một danh sách liên kết vòng trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập chia một danh sách liên kết vòng trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tạo danh sách liên kết đôi
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tạo danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Hiển thị danh sách liên kết đôi theo chiều đảo ngược
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách hiển thị danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập hiển thị danh sách liên kết đôi theo chiều đảo ngược trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kích cỡ của danh sách liên kết đôi
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách tìm kích cỡ của danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kích cỡ của danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kiếm một phần tử trong danh sách liên kết đôi
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách tìm kiếm phần tử trong danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kiếm phần tử trong danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Cập nhật một phần tử của danh sách liên kết đôi
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách cập nhật một phần tử của danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập cập nhật một phần tử của danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Xóa một phần tử từ danh sách liên kết đôi
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách xóa một phần tử từ danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập xóa một phần tử từ danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Nối hai danh sách liên kết đôi
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách nối hai danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập nối hai danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Chia một danh sách liên kết đôi thành hai
Bài tập C này giúp bạn làm quen dần với cách tạo danh sách liên kết đôi và cách chia một danh sách liên kết đôi trong C. Để giải bài tập này, mình sử dụng cấu trúc struct trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập chia một danh sách liên kết đôi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Bài tập C về đọc ghi file
Sao chép nội dung của một file vào file khác
Đây là bài tập C cơ bản giúp bạn hiểu cách mở file, đọc ghi file bởi sử dụng các hàm fopen(), fgetc() và fputc() trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập sao chép nội dung từ file này sang file khác trong C:
Giải thích chương trình C trên
- Đầu tiên chúng ta mở một file trong chế độ đọc:
- fp1=fopen(“baitapc.txt”,”r”);
- và mở một file trong chế độ ghi:
- fp2=fopen(“baitapc1.txt”,”w”);
- Bạn nên kiểm tra xem file đã được mở thành công hay không bởi sử dụng lệnh kiểm tra NULL.
- if(fp2==NULL)
- {
- //file khong duoc mo thanh cong
- }
- Nếu mọi thứ đã sẵn sàng: chúng ta bắt đầu đọc các ký tự từ file đã mở bởi sử dụng hàm fgetc(file) và sau đó ghi dữ liệu vào trong file khác bởi sử dụng hàm fputc(file).
- Ký tự EOF, là viết tắt của End of File, xác định vị trí cuối cùng của file. Kiểm tra nếu gặp ký tự này thì tiến trình ghi dữ liệu vào file của chúng ta sẽ kết thúc.
- do {
- a = fgetc(fp1);
- fputc(a,fp2);
- }while(a!=EOF);
Kết quả của ví dụ C trên
Giả sử trong baitapc.txt chúng ta có nội dung sau:
Sau khi biên dịch chương trình C trên, bạn sẽ thấy trong baitapc1.txt có nội dung sau:
Đọc n ký tự từ file
Bài tập này giúp bạn làm quen với các hàm để mở file, đóng file, đọc ghi file trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập đọc n ký tự cuối của file trong C:
Giải thích chương trình C trên
- Đầu tiên mở file trong trong chế độ đọc:
- fp=fopen(“baitapc.txt”,”r”);
- Chọn một giá trị tại đó chúng ta bắt đầu đọc. Chúng ta đang di chuyển con trỏ file tới vị trí cuối cùng bởi sử dụng hàm fseek() và đang truyền hằng số SEEK_END.
- fseek(fp,0,SEEK_END);
- Bây giờ chúng ta ước lượng vị trí hiện tại của con trỏ file:
- length = ftell(fp);
Hàm ftell() sẽ nói cho chúng ta biết vị trí của con trỏ file.
- Chúng ta cần đọc n ký tự cuối cùng từ file vì thế chúng ta cần di chuyển con trỏ tới ký tự thứ (length-n) bắt đầu từ cuối file. Chúng ta sẽ đọc nội dung file từ vị trí này.
- fseek(fp, (length – num), SEEK_SET);
Kết quả của ví dụ C trên
Giả sử trong baitapc.txt chúng ta có nội dung sau:
Biên dịch chương trình C trên sẽ cho kết quả:
Chuyển đổi nội dung file thành dạng chữ hoa và ghi nội dung vào một file khác
Bài tập này giúp bạn làm quen với các hàm để mở file, đóng file, đọc ghi file trong C. Ngoài ra, để chuyển đổi thành chữ hoa, bạn sử dụng hàm toupper() trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập chuyển đổi nội dung file thành chữ hoa và ghi nội dung vào file trong C:
Giải thích chương trình C trên
- Đầu tiên chúng ta mở một file trong chế độ đọc và mở file khác trong chế độ ghi:
- fp1=fopen(“baitapc.txt”,”r”);
- fp2=fopen(“baitapc1.txt”,”w”);
- Bây giờ đọc từng ký tự, và sử dụng hàm toupper() để chuyển đổi sang chữ hoa.
- do {
- a=fgetc(fp1);
- a=toupper(a);
- fputc(a,fp2);
- }while(a!=EOF);
- Sau khi chuyển đổi sang chữ hoa, chúng ta ghi dữ liệu vào file khác. Bất cứ khi nào gặp ký tự EOF (viết tắt của End of File) thì chúng ta kết thúc tiến trình đọc và ghi file.
Kết quả của ví dụ C trên
Giả sử trong baitapc.txt chúng ta có nội dung sau:
Sau khi biên dịch chương trình C trên, bạn sẽ thấy trong baitapc1.txt có nội dung sau:
So sánh hai file
Bài tập này minh họa cách so sánh nội dung của hai file để kiểm tra xem hai file có đồng nhất hay là không.
Đây cũng là một ví dụ minh họa giúp bạn hiểu cách đọc ghi file trong C. Chúng ta thực hiện theo các bước:
- Đầu tiên, chúng ta khai báo hai con trỏ file cho hai file.
- Mở hai file trong chế độ đọc.
- Bên trong vòng lặp while chúng ta đọc từng ký tự của hai file và kiểm tra xem ký tự đó có phải là EOF (viết tắt của End of File) hay không.
- Kiểm tra xem từng ký tự của hai file có bằng nhau hay không
- Nếu tất cả là bằng nhau thì kết luận nội dung hai file là đồng nhất. Nếu không thì kết luận rằng nội dung hai file là khác nhau.
Chương trình C
Dưới đây là chương trình C để giải bài tập so sánh nội dung của hai file trong C:
Kết quả của ví dụ C trên
Giả sử chúng ta có hai file là baitapc.txt và baitapc1.txt có nội dung sau:
baitapc.txt
baitapc1.txt
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Đọc ghi file
Đây là chương trình C cơ bản minh họa cách đọc ghi file bởi sử dụng các hàm trong C.
- Sử dụng hàm fopen() để mở file trong các chế độ khác nhau
- Sử dụng hàm fwrite() để ghi file
- Sử dụng hàm fread() để đọc file
- Sử dụng hàm fclose() để đóng file
Chương trình C
Dưới đây là chương trình C để giải bài tập đọc ghi file trong C:
Kết quả của ví dụ C trên
Biên dịch và chạy chương trình C trên sẽ cho kết quả sau:
Các bài tập tham khảo thêm
1000 bài tập của thầy Nguyễn Tấn Trần Minh Khang:
https://drive.google.com/file/d/1cz9vhOCfICePaJ96naN50LHwV3M8ZZiG/view?usp=sharing
250 bài tập lập trình C:
https://drive.google.com/file/d/1NFIGNfYphgvJOJJWsKV2bsrePZf92u6Y/view?usp=sharing
Lời Kết
Vậy là chúng ta đã đi hết các bài tập về lập trình C, nói chung vẫn còn thiếu khá nhiều. Các bạn nên tự rèn luyện hay sử dụng chúng làm thêm các bài tập thực tế khác, để nâng cao khả năng lập trình cũng như củng cố tư duy lập trình.
Nếu cảm thấy bài viết có ích hay đánh giá và chia sẻ cho bạn bè. Đừng quên tham gia nhóm Nghiện lập trình để cùng trao đổi và kết nối nhé!