Cho chuỗi có chữ hoa/thường lẫn lộn, chuẩn hóa: chữ cái đầu câu và chữ cái đầu mỗi từ (sau dấu cách) viết hoa, các chữ còn lại viết thường.
Ví dụ
Input: "heLlO wORLD" → Output: "Hello World" Input: "sUNIDHi bAnSAL" → Output: "Sunidhi Bansal"
Phương pháp dùng mã ASCII:
- Duyệt chuỗi, nếu là ký tự đầu (
i==0) hoặc sau dấu cách (str[i-1]==' ') và là chữ thường (a-z) → trừ 32 ('A'-'a') để viết hoa. - Nếu không phải vị trí đầu từ và là chữ hoa (
A-Z) → cộng 32 ('a'-'A') để viết thường.
Mã nguồn C
#include <stdio.h>
int firstupper(char str[], int n) {
for (int i = 0; i < n; i++) {
if ((i == 0 || str[i-1] == ' ') && str[i] != ' ') {
if (str[i] >= 'a' && str[i] <= 'z')
str[i] = str[i] + ('A' - 'a');
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = str[i] + ('a' - 'A');
}
}
return 0;
}
int main() {
char str[] = "sUNIDHi bAnSAL";
int n = sizeof(str) / sizeof(str[0]);
firstupper(str, n);
printf("%s\n", str);
return 0;
}
Kết quả
Sunidhi Bansal