Tổng Hợp Bài Tập C Cơ Bản Phần 2
Có thể bạn quan tâm
Trong bài này chúng ta cùng thực hành các bài tập C về sử dụng chuỗi, tính toán, hàm đệ quy và nâng cao hơn trong việc dùng con trỏ.
Bài 19 phần 2 trong Serie Học lập trình C từ A tới Z
Table of Contents
- Bài tập C về Chuỗi (không sử dụng hàm)
- In một chuỗi
- Tìm độ dài chuỗi (không sử dụng hàm)
- Đếm số lần xuất hiện của một ký tự trong chuỗi
- Đếm số nguyên âm, phụ âm trong chuỗi
- Sắp xếp các ký tự của chuỗi
- Sao chép chuỗi
- Đảo ngược chuỗi
- Tìm kiếm chuỗi
- Tráo đổi hai chuỗi
- So sánh hai chuỗi
- Nỗi chuỗi
- Kiểm tra xem hai chuỗi là anagram không
- Đảo ngược các ký tự của từng từ trong một chuỗi dài
- Đảo ngược thứ tự từ của một chuỗi dài
- Bài tập C về Chuỗi (sử dụng hàm)
- Sắp xếp tập hợp các chuỗi theo thứ tự chữ cái
- Chuyển đổi chuỗi thành số nguyên
- Biến đổi chuỗi thành chữ hoa
- Biến đổi chuỗi thành chữ thường
- Sao chép một chuỗi sang một chuỗi khác
- Nối hai chuỗi
- Tìm độ dài chuỗi
- Một số bài tập tính toán trong C
- Tính lập phương của một số
- Kiểm tra số Armstrong
- Kiểm tra số nguyên tố
- Tính giai thừa
- Dãy Fibonacci (không sử dụng đệ qui)
- Tính trung bình
- Tính phần trăm
- Tìm căn bậc hai của một số (không sử dụng sqrt())
- Tìm căn bậc ba của một số
- Tính hoán vị
- Tìm ước chung lớn nhất của hai số
- Tìm bội chung nhỏ nhất của hai số
- Bài tập C về Đệ qui
- In dãy Fibonacci bởi sử dụng đệ qui
- Tính tổng n số bởi sử dụng đệ qui
- Giải bài toán Tháp Hà Nội (Tower of Hanoi)
- Tính giai thừa bởi sử dụng đệ qui
- Bài tập C về Con trỏ
- Cộng hai số bởi sử dụng con trỏ
- Tráo đổi hai giá trị bởi sử dụng con trỏ
- Tính tổng giá trị các phần tử trong mảng bởi sử dụng con trỏ
- Tìm độ dài chuỗi bởi sử dụng con trỏ
- Sử dụng con trỏ đề duyệt một mảng các số nguyên và in các giá trị theo thứ tự đảo ngược
- Bài tập C về toán tử sizeof
- Lời Kết
Bài tập C về Chuỗi (không sử dụng hàm)
In một chuỗi
Bài tập đơn giản này giúp bạn hiểu cách khai báo một chuỗi và cách in một chuỗi trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập in một chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm độ dài chuỗi (không sử dụng hàm)
Nhiều khi bạn cần sử dụng độ dài của một chuỗi để thực hiện hoạt động nào đó. Chương này minh họa cho bạn cách tìm độ dài chuỗi mà không cần sử dụng hàm xử lý chuỗi trong C.
Bạn cần lưu ý là phải kiểm tra phần tử null (ký tự ‘\0’) trong chuỗi.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm độ dài chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Đếm số lần xuất hiện của một ký tự trong chuỗi
Để giải bài tập C này bạn cần sử dụng vòng lặp và cần kiểm tra ký tự ‘\0’ (giá trị null) trong chuỗi.
Chương trình C
Dưới đây là chương trình C để giải bài tập đếm số lần xuất hiện của một ký tự của chuỗi trong trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Đếm số nguyên âm, phụ âm trong chuỗi
Các nguyên âm (vowels) là a, e, i, o, u. Bạn kiểm tra xem đó có là nguyên âm, nếu là true thì tăng biến đếm nguyên âm, nếu không thì tăng biến đếm phụ âm (consonants). Bạn lưu ý rằng là cần phải kiểm tra giá trị null (ký tự ‘\0’).
Chương trình C
Dưới đây là chương trình C để giải bài tập đếm số phụ âm, nguyên âm của một chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Sắp xếp các ký tự của chuỗi
Để giải bài tập C này bạn cần sử dụng hàm strlen() để tìm độ dài chuỗi. Sau đó sử dụng lồng vòng lặp cùng cách tráo đổi giá trị.
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 ký tự của chuỗi theo thứ tự bảng chữ cái trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Sao chép chuỗi
Cũng giống như sao chép mảng trong C, bạn sử dụng vòng lặp để duyệt qua từng ký tự trong chuỗi, sau đó sao chép vào trong chuỗi đích (chuỗi s2 chẳng hạn). Bạn cần lưu ý là chuỗi đích phải có độ dài bằng chuỗi ban đầu (chuỗi s1).
Chương trình C
Dưới đây là chương trình C để giải bài tập sao chép chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Đảo ngược chuỗi
Để thu được một chuỗi đảo ngược, bạn cần khai báo thêm một chuỗi đích có kích cỡ bằng kích cỡ với chuỗi ban đầu. Sử dụng vòng lặp để duyệt qua từng ký tự của chuỗi ban đầu rồi sau đó gán giá trị ký tự đó cho chuỗi đích. Kiểm tra khi nào gặp giá trị null (ký tự ‘\0’) thì kết thúc vòng lặp.
Chương trình C
Dưới đây là chương trình C để giải bài tập đảo ngược chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm kiếm chuỗi
Yêu cầu bài tập là tìm kiếm một chuỗi con trong một chuỗi và đếm xem chuỗi con đó xuất hiện bao nhiêu lần.
Để giải bài tập C này, chúng ta cần sử dụng các vòng lặp cũng như cần nhớ kiểm tra điều kiện giá trị null (ký tự ‘\0’).
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm kiếm từ hoặc ký tự trong một chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tráo đổi hai chuỗi
Cũng tương tự như cách tráo đổi hai giá trị bởi sử dụng biến thứ ba, với bài tập C này, bạn sử dụng một biến tạm (biến thứ ba) để làm trung gian để tráo đổi hai chuỗi. Bạn sử dụng vòng lặp để duyệt qua tất cả các ký tự của hai chuỗi.
Chương trình C
Dưới đây là chương trình C để giải bài tập tráo đổi hai chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
So sánh hai chuỗi
Yêu cầu bài tập C này là so sánh xem hai chuỗi có đồng nhất (giống nhau) hay không. Để giải bài tập C này bạn cần sử dụng vòng lặp để duyệt qua tất cả các ký tự của hai chuỗi và kiểm tra từng ký tự tương ứng với chỉ mục có giống nhau không.
Chương trình C
Dưới đây là chương trình C để giải bài tập so sánh hai chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Nỗi chuỗi
Bài tập C này có nhiều cách gọi: trộn hai chuỗi, nối hai chuỗi, ghép hai chuỗi hay cộng hai chuỗi, … Dù có nhiều cách gọi khác nhau đi chăng nữa thì đây cũng chỉ là một bài tập để nối ghép các ký tự của hai chuỗi để thành một chuỗi duy nhất.
Để giải bài tập C này, bạn sử dụng hàm strlen() để tìm độ dài chuỗi. Sử dụng vòng lặp để lặp qua tất cả ký tự của chuỗi.
Chương trình C
Dưới đây là chương trình C để giải bài tập nối chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Kiểm tra xem hai chuỗi là anagram không
Anagram là thuật ngữ để chỉ hai chuỗi có số ký tự và các ký tự giống nhau, nhưng thứ tự của các ký tự trong chuỗi có thể khác nhau.
Ví dụ: hai chuỗi listen và sliten là anagram.
Để giải bài tập C này, trước hết bạn cần so sánh độ dài của hai chuỗi (sử dụng hàm strlen() để tìm độ dài). Tiếp đó, bạn sắp xếp hai chuỗi theo thứ tự chữ cái (bạn có thể tham khảo cách sắp xếp ở chương sắp xếp các ký tự của chuỗi trong C), và cuối cùng sử dụng vòng lặp để duyệt qua hai chuỗi đã sắp xếp và so sánh xem từng ký tự của hai chuỗi này có giống nhau không.
Chương trình C
Dưới đây là chương trình C để giải bài tập kiểm tra anagram trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Đảo ngược các ký tự của từng từ trong một chuỗi dài
Yêu cầu bài tập là với một chuỗi dài, ví dụ Toi yeu Viet Nam, bạn đảo ngược các ký tự của từng từ của chuỗi đó, thành ioT uey teiV maN.
Đây là một bài tập C khá phức tạp yêu cầu bạn cần tốn thời gian suy nghĩ. Hãy thử sức nhé!
Chương trình C
Dưới đây là chương trình C để giải bài tập đảo ngược các ký tự của từng từ của chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Đảo ngược thứ tự từ của một chuỗi dài
Yêu cầu bài tập là đảo ngược thứ tự của các từ trong một chuỗi dài. Ví dụ, bạn đảo chuỗi ban đầu Toi yeu Viet Nam thành Nam Viet yeu Toi.
Đây là một bài tập C khá phức tạp yêu cầu bạn cần tốn thời gian suy nghĩ. Hãy thử sức nhé!
Chương trình C
Dưới đây là chương trình C để giải bài tập đảo ngược thứ tự từ của chuỗ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ề Chuỗi (sử dụng hàm)
Sắp xếp tập hợp các chuỗi theo thứ tự chữ cái
Nhiều khi bạn cần sắp xếp một tập hợp các chuỗi theo thứ tự chữ cái. Chương này minh họa cho bạn cách sắp xếp các chuỗi bởi sử dụng hàm strcmp() trong 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 chuỗi theo thứ tự chữ cái trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Chuyển đổi chuỗi thành số nguyên
Nhiều khi bạn cần lấy giá trị nguyên từ trong một chuỗi để thực hiện hoạt động nào đó. Giả sử như có trường hợp bạn nhập điểm thi của sinh viên dưới dạng chuỗi và do đó không thể thực hiện phép tính toán trên điểm thi này.
Chương này minh họa cách chuyển đổi chuỗi thành số nguyên bởi sử dụng hàm atoi() trong C. Hàm atoi() nhận tham số là một chuỗi và trả về dạng số nguyên.
Chương trình C
Dưới đây là chương trình C để minh họa cách chuyển đổi chuỗi thành số nguyên trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Biến đổi chuỗi thành chữ hoa
Chương này minh họa cách biến đổi một chuỗi thành dạng chuỗi chữ hoa bởi sử dụng hàm strupr() trong C. Hàm strupr() nhận một chuỗi làm tham số và biến đổi tất cả các chữ cái trong chuỗi thành chữ hoa.
Ghi chú:Sử dụng hàm gets(string) để nhập các chuỗi bao gồm cả khoảng trống (không giống hàm scanf()).
Chương trình C
Dưới đây là chương trình C để giải bài tập biến đổi chuỗi thành chữ hoa trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Biến đổi chuỗi thành chữ thường
Chương này minh họa cách biến đổi một chuỗi thành dạng chuỗi chữ thường bởi sử dụng hàm strlwr() trong C. Hàm strlwr() nhận một chuỗi làm tham số và biến đổi tất cả các chữ cái trong chuỗi thành chữ thường.
Ghi chú:Sử dụng hàm gets(string) để nhập các chuỗi bao gồm cả khoảng trống (không giống hàm scanf()).
Chương trình C
Dưới đây là chương trình C để giải bài tập biến đổi chuỗi thành chữ thường trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Sao chép một chuỗi sang một chuỗi khác
Chương này minh họa cách sao chép nội dung từ chuỗi này sang chuỗi khác bởi sử dụng hàm strcpy(str2, str1) trong C. Hàm strcpy(str2, str1) nhận hai chuỗi làm tham số, trong đó: chuỗi str1 là chuỗi ban đầu, chuỗi str2 là chuỗi có nội dung sao chép từ chuỗi str1.
Chương trình C
Dưới đây là chương trình C để giải bài tập sao chép chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Nối hai chuỗi
này minh họa cách nối hai chuỗi thành một chuỗi bởi sử dụng các hàm strcpy() và strcat() trong C.
Giả sử bạn cần nối hai chuỗi là str1 và str2. Bạn cần khai báo thêm một chuỗi str3 có độ dài bằng tổng độ dài của str1 và str2. Sau đó:
- Sử dụng hàm strcpy(str3, str1) để sao chép chuỗi str1 vào str3.
- Sử dụng hàm strcat(str3, str2) để nối chuỗi str2 với str1 vừa được sao chép.
Chương trình C
Dưới đây là chương trình C để giải bài tập nối chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm độ dài chuỗi
Đôi khi bạn cần tìm độ dài của một chuỗi để thực hiện hoạt động nào đó. Ngôn ngữ C cung cấp hàm strlen(str) nhận một chuỗi làm tham số và trả về độ dài của chuỗi đó.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm độ dài chuỗi trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Một số bài tập tính toán trong C
Tính lập phương của một số
Tính lập phương của một số là bài toán đơn giản trong C và không có nhiều điều cần chú ý về bài tập này. Bài tập này với mục đích là giúp bạn làm quen với cấu trúc chương trình C và cách khai báo và sử dụng các biến, các phép tính toán trên biến.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính lập phương trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Kiểm tra số Armstrong
Một số armstrong là số có giá trị bằng tổng lập phương các chữ số của số đó. Ví dụ, 153 là một số armstrong bởi vì:
Chương trình C
Dưới đây là chương trình C để giải bài tập kiểm tra số Armstrong trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Kiểm tra số nguyên tố
Số nguyên tố chỉ chia hết cho 1 và chính nó. Ví dụ các số nguyên tố 1, 2, 3, 5 , 7, 11 …
Để giải bài tập C này, bạn sử dụng vòng lặp để kiểm tra phép chia số cần kiểm tra với các giá trị tăng dần từ 1 tới số đó. Sử dụng biến đếm để đếm số ước (hay số phép chia hết).
Chương trình C
Dưới đây là chương trình C để giải bài tập kiểm tra số nguyên tố trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tính giai thừa
Giai thừa của một số n là tích các số từ 1 tới n. Ví dụ, giai thừa của 4 là (4 * 3 * 2 * 1 = 24). Đây là bài tập C khá đơn giản giúp bạn làm quen với cách sử dụng vòng lặp trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính giai thừa trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Dãy Fibonacci (không sử dụng đệ qui)
Dãy Fibonacci là dãy số được tạo bằng cách: số kế tiếp bằng tổng của hai số liền trước. Dãy Fibonacci bắt đầu từ hai số F0 & F1. Giá trị ban đầu của F0 & F1 có thể tương ứng là 0, 1 hoặc 1, 1.
Điều kiện của dãy Fibonacci có thể tổng quát lại như sau:
Dưới đây là ví dụ hai Fibonacci
F8 = 0 1 1 2 3 5 8 13
hoặc:
F8 = 1 1 2 3 5 8 13 21
Trong chương này chúng ta sẽ giải bài tập C này bởi không sử dụng khái niệm đệ qui. Mời bạn theo dõi chương trình C dưới đây.
Chương trình C
Dưới đây là chương trình C để giải bài tập in dãy Fibonacci trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tính trung bình
Giá trị trung bình của các số bằng tổng giá trị chia cho số các số. Đây là bài tập C khá cơ bản giúp bạn làm quen với các toán tử số học trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính giá trị trung bình trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tính phần trăm
Tương tự như bài tập tính giá trị trung bình trong C, đây là một bài tập khá cơ bản giúp bạn làm quen với các toán tử số học trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính giá trị phần trăm trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm căn bậc hai của một số (không sử dụng sqrt())
Đây có thể là một trong các bài tập mà các bạn nhận được từ Giảng viên. Bài tập C này có thể được giải theo hai bước:
- Tìm phân nguyên
- Tìm phần thập phân
Đây chỉ là cách giải cho kết quả xấp xỉ, và độ chính xác phụ thuộc vào số các số sau dấu thập phân.
Bạn theo dõi phần code dưới đây để hiểu cách tìm căn bậc hai của một số bất kỳ (tất nhiên không phải là số âm rồi) mà không sử dụng hàm sqrt() trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm căn bậc hai của một số trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm căn bậc ba của một số
Tương tự như cách tìm căn bậc hai (không sử dụng hàm sqrt()), bài tập C này có thể được giải theo hai bước:
- Tìm phân nguyên
- Tìm phần thập phân
Đây chỉ là cách giải cho kết quả xấp xỉ, và độ chính xác phụ thuộc vào số các số sau dấu thập phân.
Bạn theo dõi phần code dưới đây để hiểu cách tìm căn bậc ba của một số bất kỳ trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm căn bậc ba của một số trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tính hoán vị
Hoán vị là khái niệm được sử dụng trong xác suất thống kế. Công thức tính hoán vị như sau:
Đây là bài tập C khá đơn giản giúp bạn làm quen với cách sử dụng đệ qui để tính giai thừa trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm hoán vị trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm ước chung lớn nhất của hai số
Chắc mình sẽ không cần nhắc lại khái niệm ước số chung lớn nhất (USCLN) của hai hay nhiều số. Ví dụ, ước số chung lớn nhất của 12 và 16 là 4.
Tìm ước số chung lớn nhất là bài tập khá đơn giản và có thể là bài tập về nhà của các bạn. Để giải bài tập C này, đơn giản bạn sử dụng vòng lặp để cùng kiểm tra phép chia hai số cho các số từ 1 tới số đó.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm ước số chung lớn nhất trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm bội chung nhỏ nhất của hai số
Chắc mình không cần nhắc lại khái niệm bội số chung nhỏ nhất (BSCNN) của hai hay nhiều số. Ví dụ: bội số chung nhỏ nhất của 3 và 4 là 12
Tìm bội số chung nhỏ nhất là bài tập khá đơn giản và có thể là bài tập về nhà của các bạn. Để giải bài tập C này, đầu tiên bạn tìm số lớn nhất trong hai số, gán giá trị lớn nhất cho một biến tạm và kiểm tra xem số này có chia hết cho số còn lại không, nếu chia hết thì bội số chung nhỏ nhất chính là số lớn nhất đó.
Nếu không chia hết, tiếp tục cộng giá trị của số lớn hơn vào biến tạm, và thực hiện như trên. Bạn sử dụng vòng lặp để thực hiện các phép toán trên.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm ước số chung lớn nhất trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Bài tập C về Đệ qui
In dãy Fibonacci bởi sử dụng đệ qui
Dãy Fibonacci là dãy số được tạo bằng cách: số kế tiếp bằng tổng của hai số liền trước. Dãy Fibonacci bắt đầu từ hai số F0 & F1. Giá trị ban đầu của F0 & F1 có thể tương ứng là 0, 1 hoặc 1, 1.
Điều kiện của dãy Fibonacci có thể tổng quát lại như sau:
Dưới đây là ví dụ hai Fibonacci
F8 = 0 1 1 2 3 5 8 13
hoặc:
F8 = 1 1 2 3 5 8 13 21
Trong chương này chúng ta sẽ giải bài tập C này bởi sử dụng khái niệm đệ quy. Mời bạn theo dõi chương trình C dưới đây.
Chương trình C
Dưới đây là chương trình C để giải bài tập in dãy Fibonacci sử dụng đệ quy trong C:
Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Tính tổng n số bởi sử dụng đệ qui
Đây là bài tập C khá đơn giản giúp bạn hiểu cách sử dụng đệ quy trong ngôn ngữ lập trình C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính tổng n số sử dụng đệ quy trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Giải bài toán Tháp Hà Nội (Tower of Hanoi)
Trước khi tìm hiểu lời giải cho bài toán Tháp Hà Nội (Tower of Hanoi), mình xin nhắc lại một số qui tắc của trò chơi toán Tháp Hà Nội này:
Tháp Hà Nội (Tower of Hanoi) là gì ?
Bài toán Tháp Hà Nội (Tower of Hanoi) là một trò chơi toán học bao gồm 3 cột và với số đĩa nhiều hơn 1.
Dưới đây là hình minh họa bài toán Tháp Hà Nội (Tower of Hanoi) với trường hợp có 3 đĩa.
Các đĩa có kích cỡ khác nhau và xếp theo tự tự tăng dần về kích cỡ từ trên xuống: đĩa nhỏ hơn ở trên đĩa lớn hơn. Với số đĩa khác nhau thì ta có các bài toán Tháp Hà Nội (Tower of Hanoi) khác nhau, tuy nhiên lời giải cho các bài toán này là tương tự nhau. Lời giải tối ưu cho bài toán Tháp Hà Nội (Tower of Hanoi) là khi trò chơi chỉ có 3 cọc. Với số cọc lớn hơn thì lời giải bài toán vẫn chưa được khẳng định.
Qui tắc trò chơi toán học Tháp Hà Nội (Tower of Hanoi)
Nhiệm vụ của trò chơi là di chuyển các đĩa có kích cỡ khác nhau sang cột khác sao cho vẫn đảm bảo thứ tự ban đầu của các đĩa: đĩa nhỏ nằm trên đĩa lớn. Dưới đây là một số qui tắc cho trò chơi toán học Tháp Hà Nội (Tower of Hanoi):
- Mỗi lần chỉ có thể di chuyển một đĩa từ cột này sang cột khác.
- Chỉ được di chuyển đĩa nằm trên cùng (không được di chuyển các đĩa nằm giữa).
- Đĩa có kích thước lớn hơn không thể được đặt trên đĩa có kích thước nhỏ hơn.
Dưới đây là hình minh họa cách giải bài toán Tháp Hà Nội (Tower of Hanoi) với trường hợp có 3 đĩa.
Bài toán Tháp Hà Nội (Tower of Hanoi) với số đĩa là n có thể được giải với số bước tối thiểu là 2n−1. Do đó, với trường hợp 3 đĩa, bài toán Tháp Hà Nội (Tower of Hanoi) có thể được giải sau 23−1 = 7 bước.
Phần dưới đây mình trình bày hai cách giải: sử dụng đệ quy và KHÔNG sử dụng đệ quy trong C.
Chương trình C: sử dụng đệ quy
Dưới đây là chương trình C để giải bài toán Tháp Hà Nội (Tower of Hanoi) sử dụng đệ quy trong C trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Chương trình C: Không sử dụng đệ quy
Kết quả
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Tính giai thừa bởi sử dụng đệ qui
Giai thừa của một số n là tích các số từ 1 tới n. Ví dụ, giai thừa của 4 là (4 * 3 * 2 * 1 = 24). Đây là bài tập C khá đơn giản giúp bạn làm quen với cách sử dụng đệ quy trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính giai thừa bởi sử dụng đệ quy trong C:
Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Bài tập C về Con trỏ
Cộng hai số bởi sử dụng con trỏ
Đây là bài tập C khá đơn giản minh họa giúp bạn cách khai báo con trỏ và cách thực hiện các phép toán trên con trỏ trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập cộng hai số bởi sử dụng con trỏ trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tráo đổi hai giá trị bởi sử dụng con trỏ
Để tráo đổi giá trị, ngoài cách sử dụng con trỏ, chúng ta còn có các cách khác, chẳng hạn bởi sử dụng biến thứ ba hay bởi không sử dụng biến thứ ba.
Tuy nhiên, giải bài tập C cơ bản này bởi sử dụng con trỏ giúp bạn hiểu hơn về cách sử dụng con trỏ trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tráo đổi giá trị bởi sử dụng con trỏ trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tính tổng giá trị các phần tử trong mảng bởi sử dụng con trỏ
Không có gì phức tạp với bài tập C này. Bài tập C này chỉ là một trong các ví dụ đơn giản giúp bạn hiểu cách sử dụng vòng lặp và đặc biệt là con trỏ trong C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tính tổng các phần tử mảng bởi sử dụng con trỏ trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Tìm độ dài chuỗi bởi sử dụng con trỏ
Chúng ta đã có các cách ngắn hơn để tìm độ dài chuỗi là: tìm độ dài chuỗi (không sử dụng hàm) và tìm độ dài chuỗi (sử dụng hàm).
Chương trình tìm độ dài chuỗi bởi sử dụng con trỏ thì rườm rà hơn nhưng đây là bài tập C minh họa cách sử dụng con trỏ trong C. Cho nên mình cho rằng bạn nên theo dõi để hiểu thêm về cách dùng con trỏ trong ngôn ngữ lập trình C.
Chương trình C
Dưới đây là chương trình C để giải bài tập tìm độ dài chuỗi bởi sử dụng con trỏ trong C:
Bạn nhớ là nên kiểm tra giá trị null (ký tự ‘\0’) của chuỗi nhé.
Biên dịch chương trình C trên sẽ cho kết quả:
Sử dụng con trỏ đề duyệt một mảng các số nguyên và in các giá trị theo thứ tự đảo ngược
Đây là bài tập C minh họa cách duyệt một mảng và in mảng theo chiều đảo ngược bằng cách sử dụng con trỏ trong C. Bạn tìm hiểu chương trình C dưới đây để hiểu cách làm việc của con trỏ trên mảng.
Chương trình C
Dưới đây là chương trình C để giải bài tập duyệt và in mảng theo chiều đảo ngược bởi sử dụng con trỏ trong C:
Biên dịch chương trình C trên sẽ cho kết quả:
Bài tập C về toán tử sizeof
Mặc dù toán tử sizeof có cú pháp là:
Nhưng sizeof là một toán tử chứ không phải là một hàm trong C. Toán tử sizeof nhận một tham số là bất kỳ kiểu dữ liệu nào và trả về kích cỡ của kiểu dữ liệu đó.
Cách sử dụng toán tử sizeof trong C
1. Chương trình C dưới đây minh họa cách sử dụng của toán tử sizeof để trả về kích cỡ của các kiểu dữ liệu trong C
Chạy chương trình C trên sẽ cho kết quả:
2. Các chương trình C dưới đây minh họa cách sử dụng của toán tử sizeof để trả về kích cỡ của các con trỏ tới các kiểu dữ liệu khác nhau: int, float, char, struct, …. Bạn lưu ý là các ví dụ về con trỏ tới kiểu dữ liệu nhé, KHÔNG phải là kích cỡ của kiểu dữ liệu.
Lưu ý: Kích thước của một biến con trỏ tùy thuộc vào Hệ điều hành, do đó với các ví dụ dưới đây, nếu bạn có thực hành mà ra kết quả khác thì bạn cũng đừng lo lắng.
Sử dụng toán tử sizeof tìm kích cỡ của struct trong C
Chạy chương trình C trên sẽ cho kết quả:
Sử dụng toán tử sizeof tìm kích cỡ của con trỏ tới struct trong C
Chạy chương trình C trên sẽ cho kết quả:
Sử dụng toán tử sizeof tìm kích cỡ của của con trỏ tới float trong C
Chạy chương trình C trên sẽ cho kết quả:
Sử dụng toán tử sizeof tìm kích cỡ của của con trỏ tới int trong C
Chạy chương trình C trên sẽ cho kết quả:
Sử dụng toán tử sizeof tìm kích cỡ của của con trỏ tới char trong C
Chạy chương trình C trên sẽ cho kết quả:
Lời Kết
Hi vọng, sau khi các bạn học các bài tập C này đã có thể sử dụng thành thạo chúng trong tính toán và xử lý chuỗi. Ngoài ra hiểu rõ hơn về hàm đệ qui và cách sử dụng con trỏ.
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é!
Rate this postTừ khóa » độ Dài Chuỗi C
-
Độ Dài Chuỗi Trong C (strlen) - Lập Trình Căn Bả
-
Bài Tập C - Tìm độ Dài Chuỗi Trong C - VietTuts
-
Hàm Strlen() - Tính độ Dài Chuỗi Trong C - VietTuts
-
Lập Trình C - Tìm độ Dài Chuỗi
-
Cách Tìm độ Dài Chuỗi Trong C
-
Cách Tìm độ Dài Chuỗi Trong C
-
String : Bài Tập C Cơ Bản: Hiển Thị độ Dài Của Xâu | Codelearn
-
Tìm độ Dài Của Chuỗi Trong C++
-
Top 15 Hàm đo độ Dài Chuỗi Trong C
-
Cách Tìm độ Dài Của Một Chuỗi Trong C - Tech Wiki
-
LTC 69. Lập Trình Tính độ Dài Chuỗi Trong C, Hàm Strlen Trong Lập Trình C
-
Bài Tập C++ - Tìm độ Dài Chuỗi Trong C++ - VietTuts - MarvelVietnam
-
Đếm độ Dài Của Chuỗi Với Hàm Strlen() Trong PHP - Góc Học IT
-
Tính độ Dài Chuỗi