Menu
CoddyTech

Chuyển thành chữ hoa

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 23 trên 63.

challenge icon

Thử thách

Dễ

Mở rộng chương trình tiện ích văn bản từ bài học trước để thêm chức năng chuyển đổi chữ hoa. Chương trình cần:

  1. Nhắc người dùng nhập một câu ngắn bằng cách in ra: Enter a sentence: (không có ký tự xuống dòng ở cuối)
  2. Khai báo một mảng ký tự tên là sentence gồm 200 phần tử để lưu đầu vào
  3. Dùng scanf với định dạng %s để đọc một từ duy nhất từ người dùng
  4. In từ đã lưu theo định dạng: You entered: [word]
  5. Dùng strlen() để tính tổng số ký tự trong từ
  6. In số lượng ký tự theo định dạng: Character count: [count]
  7. In độ dài bằng strlen() theo định dạng: Length: [length]
  8. Dùng vòng lặp để duyệt từng ký tự trong từ và đếm nguyên âm
  9. Với mỗi ký tự, kiểm tra xem đó có phải là nguyên âm (a, e, i, o, u) ở dạng chữ thường hoặc chữ hoa hay không
  10. Cập nhật số lượng nguyên âm đã tìm được
  11. In số lượng nguyên âm theo định dạng: Vowel count: [count]
  12. In Uppercase: , sau đó dùng vòng lặp để chuyển từng ký tự trong từ thành chữ hoa bằng hàm toupper() và in ra

Nhớ thêm tiêu đề <string.h> để dùng hàm strlen() và tiêu đề <ctype.h> để dùng hàm toupper().

Về toupper():
Hàm toupper() trong <ctype.h> chuyển một ký tự thành dạng chữ hoa tương ứng. Nếu ký tự đã là chữ hoa hoặc không phải chữ cái, hàm sẽ giữ nguyên ký tự đó.
Ví dụ: toupper('a') trả về 'A', còn toupper('Z') trả về 'Z'.
Bạn có thể dùng hàm này bên trong vòng lặp để chuyển từng ký tự một: printf("%c", toupper(sentence[i]));

Quan trọng: Lời nhắc Enter a sentence: không được theo sau bởi ký tự xuống dòng. Hãy dùng printf("Enter a sentence: "); mà không có \n.

Đầu ra cần hiển thị kết quả theo định dạng sau:

Enter a sentence: You entered: [word]
Character count: [count]
Length: [length]
Vowel count: [count]
Uppercase: [WORD]

Ví dụ, nếu đầu vào là:

Programming

Đầu ra cần là:

Enter a sentence: You entered: Programming
Character count: 11
Length: 11
Vowel count: 3
Uppercase: PROGRAMMING

Thử thách này phát triển dựa trên bài học trước bằng cách thêm chức năng chuyển đổi chữ hoa, sử dụng hàm toupper() trong thư viện <ctype.h>. Bạn cần dùng vòng lặp để duyệt từng ký tự trong chuỗi, chuyển ký tự đó thành chữ hoa, rồi in kết quả đã chuyển đổi.

Tự làm thử

#include <stdio.h>
#include <string.h>

int main() {
    printf("Enter a sentence: \n");
    
    char sentence[200];
    scanf("%s", sentence);
    
    printf("You entered: %s\n", sentence);
    
    int char_count = strlen(sentence);
    printf("Character count: %d\n", char_count);
    
    int length = strlen(sentence);
    printf("Length: %d\n", length);
    
    int vowel_count = 0;
    for (int i = 0; i < strlen(sentence); 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);
    
    return 0;
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online