Đầu ra cuối cùng
Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 24 trên 63.
Thử thách
DễHoàn thành chương trình tiện ích văn bản bằng cách tích hợp mọi tính năng bạn đã xây dựng trong các bài học trước thành một đầu ra đầy đủ. Chương trình cần:
- Yêu cầu người dùng nhập một câu ngắn bằng cách in ra:
Enter a sentence:(không xuống dòng ở cuối: dùngprintf("Enter a sentence: "), không dùngprintf("Enter a sentence: \n")) - Khai báo một mảng ký tự có tên
sentencegồm 200 phần tử để lưu đầu vào - Dùng
scanfvới định dạng%sđể đọc một từ từ người dùng - Lưu từ ban đầu vào một mảng ký tự riêng để hiển thị
- Tính tổng số ký tự bằng
strlen() - Đếm nguyên âm bằng cách duyệt qua từng ký tự và kiểm tra xem ký tự đó có khớp với nguyên âm nào (a, e, i, o, u) ở dạng chữ thường và chữ hoa hay không
- Chuyển từ thành chữ hoa bằng hàm
toupper()trong một vòng lặp - Hiển thị mọi kết quả theo định dạng rõ ràng, có tổ chức, mỗi thông tin trên một dòng riêng
Nhớ thêm tiêu đề <string.h> cho các hàm xử lý chuỗi và tiêu đề <ctype.h> cho các hàm chuyển đổi ký tự.
Đầu ra của bạn cần hiển thị mọi kết quả theo đúng định dạng sau:
Enter a sentence: Original: [word]
Characters: [count]
Vowels: [count]
Uppercase: [WORD]Quan trọng: Lời nhắc Enter a sentence: không được theo sau bởi ký tự xuống dòng. Từ Original: xuất hiện ngay sau khi đọc đầu vào, trên cùng một dòng.
Ví dụ, nếu đầu vào là:
HelloĐầu ra của bạn sẽ là:
Enter a sentence: Original: Hello
Characters: 5
Vowels: 2
Uppercase: HELLOThử thách cuối cùng này kết hợp mọi tính năng xử lý văn bản bạn đã phát triển trong suốt dự án: xử lý đầu vào, đếm ký tự bằng strlen(), đếm nguyên âm bằng vòng lặp và câu lệnh điều kiện, cùng với chuyển đổi sang chữ hoa bằng toupper(). Chương trình cần trình bày bản tóm tắt rõ ràng, có tổ chức về kết quả phân tích văn bản.
Tự làm thử
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char sentence[200];
printf("Enter a sentence: ");
scanf("%s", sentence);
printf("You entered: %s\n", sentence);
int length = strlen(sentence);
printf("Character count: %d\n", length);
printf("Length: %d\n", length);
int vowel_count = 0;
for (int i = 0; i < length; i++) {
char c = sentence[i];
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
vowel_count++;
}
}
printf("Vowel count: %d\n", vowel_count);
printf("Uppercase: ");
for (int i = 0; i < length; i++) {
printf("%c", toupper(sentence[i]));
}
printf("\n");
return 0;
}Tất cả bài học trong Logic và luồng điều khiển
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online