Cho một chuỗi và có chữ hoa hỗn hợp, tức là có cả chữ hoa và chữ thường, nhiệm vụ là giấu ký tự đầu tiên thành chữ hoa còn lại thành chữ thường nếu nó ở dạng chữ hoa.
Hãy cùng tìm hiểu sâu về vấn đề này với sự trợ giúp của một ví dụ đơn giản.
Giống như chúng ta được cung cấp một chuỗi “hElLo world”, chúng ta phải chuyển đổi ký tự đầu tiên ‘h’ ở dạng chữ thường thành chữ hoa ‘H’ và đặt tất cả các chữ cái trước dấu cách hoặc cuối chuỗi thành chữ thường.
Hơn nữa, khi gặp ký tự đầu tiên sau dấu cách, chúng ta phải chuyển nó thành chữ hoa.
Ví dụ
Input: str[] = {“heLlO wORLD”} Output: Hello World Input: str[] = {"sUNIDHi bAnSAL"} Output: Sunidhi Bansal
Phương pháp tiếp cận được sử dụng bên dưới như sau -
- Để giải quyết vấn đề này, chúng tôi sẽ sử dụng các giá trị ASCII của các ký tự.
- ASCII là viết tắt của American Standard Code for Information Interchange, ngụ ý rằng mọi ký tự đều có một số mã được liên kết với nó. Giống như chữ cái viết hoa A-Z được cung cấp các giá trị số từ 65-90 và chữ a-z viết thường là các số có phạm vi 97-122. Vì vậy, chúng tôi sẽ sử dụng những giá trị này để giải quyết vấn đề của mình.
- Chúng tôi sẽ xem xét toàn bộ chuỗi và,
- Kiểm tra xem ký tự đầu tiên hoặc ký tự ngay sau dấu cách ‘’ có thuộc phạm vi a-z hay không, sau đó chúng tôi sẽ trừ các giá trị ASCII của "A" và "a", sau đó thêm kết quả vào ký tự.
- Nếu nó không phải là ký tự đầu tiên hoặc ký tự ngay sau dấu cách thì chúng ta phải kiểm tra xem ký tự đó có phải là chữ hoa hay không, sau đó chuyển đổi sang chữ thường, thêm giá trị của ký tự vào kết quả của phép trừ 'a' - 'A'.
Thuật toán
Start In Function int firstupper(char str[], int n) Step 1-> Initialize int i Step 2-> Loop For i = 0 And i<n And i++ If i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ' then, If str[i] >= 'a' && str[i]<='z' then, str[i] = (char)(('A'-'a') + str[i] ) End If Else If str[i] >= 'A' && str[i] <= 'Z' then, str[i] = (char)(str[i] + ('a' - 'A')) End If End Function In Function int main(int argc, char const *argv[]) Step 1-> Declare and initialize char str[] = {"sUNIDHi bAnSAL"} Step 2-> Declare n set as sizeof(str)/sizeof(str[0]) Step 3-> firstupper(str, n) Step 4-> Print "%s\n", str End main
Ví dụ
#include <stdio.h> int firstupper(char str[], int n) { int i; for(i = 0; i<n; i++) { if (i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ') { if(str[i] >= 'a' && str[i]<='z') { str[i] = (char)(('A'-'a') + str[i] ); } } else if (str[i] >= 'A' && str[i] <= 'Z') { str[i] = (char)(str[i] + ('a' - 'A')); } } return 0; } int main(int argc, char const *argv[]) { char str[] = {"sUNIDHi bAnSAL"}; int n = sizeof(str)/sizeof(str[0]); firstupper(str, n); printf("%s\n", str); return 0; }
Đầu ra
Sunidhi Bansal