Giới thiệu
Trong bài giảng Tin học 11, có một bài tập thực hành được nêu ra tại trang 73, đó là Bài 2. Đây là một bài tập khá thú vị, giúp rèn luyện kỹ năng lập trình cơ bản và xử lý chuỗi. Trong bài viết này, chúng ta sẽ tìm hiểu cách giải quyết bài tập này.
Đề bài
Viết chương trình nhập vào một chuỗi và đếm số lần xuất hiện của từng chữ cái trong chuỗi đó. Sau đó, in ra kết quả.
Ví dụ
Cho chuỗi nhập vào là "Hello World!"
Kết quả in ra:
H: 1 lần
e: 1 lần
l: 3 lần
o: 2 lần
r: 1 lần
d: 1 lần
!: 1 lần
Phân tích
Để giải quyết bài toán này, chúng ta cần ghi nhận số lần xuất hiện của từng chữ cái trong chuỗi. Có tất cả 26 chữ cái từ 'A' đến 'z'. Chúng ta có thể sử dụng một mảng với chỉ số là ký tự từ 'A' đến 'z' để lưu số lần xuất hiện của từng chữ cái.
Thuật toán
- Khởi tạo một mảng đếm có 26 phần tử, mỗi phần tử đại diện cho một chữ cái từ 'A' đến 'z'.
- Duyệt qua từng ký tự trong chuỗi đã cho.
- Nếu ký tự đó là chữ cái (từ 'A' đến 'z' hoặc từ 'a' đến 'z'), tăng số lượng tương ứng trong mảng đếm lên 1.
- Sau khi duyệt qua tất cả các ký tự trong chuỗi, in ra kết quả bao gồm số lần xuất hiện của từng chữ cái có trong chuỗi.
Lập trình
Dưới đây là một ví dụ về cách giải bài tập này bằng ngôn ngữ lập trình C:
#include <stdio.h> #include <string.h> #define MAX_CHAR 26 int main() { char str[100]; int count[MAX_CHAR] = {0}; int i; printf("Nhap vao mot chuoi: "); fgets(str, sizeof(str), stdin); for (i = 0; str[i]; i++) { if (str[i] >= 'A' && str[i] <= 'Z') { count[str[i] - 'A']++; } else if (str[i] >= 'a' && str[i] <= 'z') { count[str[i] - 'a']++; } } printf("So lan xuat hien cua cac chu cai:\n"); for (i = 0; i < MAX_CHAR; i++) { if (count[i] > 0) { printf("%c: %d lan\n", 'A' + i, count[i]); } } return 0; }
Kết luận
Bài 2 trang 73 Tin học 11 là một bài tập thực hành giúp rèn luyện kỹ năng xử lý chuỗi và tính toán số liệu. Bằng cách sử dụng mảng và duyệt qua từng ký tự trong chuỗi, chúng ta có thể tính được số lần xuất hiện của từng chữ cái và in ra kết quả. Bài tập này giúp học sinh nâng cao kiến thức lập trình và ứng dụng vào các vấn đề thực tế.