Editorial for Định dạng tên
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
``` void xoaktdb(char s[]){ char c[100]; int id = 0; for(int i = 0; i < strlen(s); i++){ if(isalpha(s[i]) || s[i] == ' '){ c[id] = s[i]; id++; } } c[id] = '\0'; strcpy(s, c); } void gomkhoang_trang(char s[]){ char newstring[100]; int id = 0, check = 1; /* Biến check dùng để kiểm tra kí tự có phải là chữ đầu Nếu phải thì là 1 ngược lại là 0 / for(int i = 0; i < strlen(s); i++){ / Sau khi loại bỏ kí tự đặt biệt thì chúng ta chỉ cần xử lý các khoảng trắng và viết hoa
3 cái if
+ đầu tiên là kiểm tra nếu là chữ và check = 1 là kí tự đầu tiên
+ Kiểm tra khoảng trắng đó có phải là khoảng trắng đầu tiên không
+ Kiểm tra chữ chữ cái bình thường
+ Khi nó không thuộc cả 3 trường hợp trên thì suy ra
kí tự của chúng ta đang là khoảng trắng -> chữ xuất hiện tiếp theo là chữ đầu của 1 từ nên check = 1
*/
if(isalpha(s[i]) && check == 1){
newstring[id] = toupper(s[i]);
id++;
check = 0;
}else if(id > 0 && s[i] == ' ' && isalpha(newstring[id - 1])){
newstring[id] = ' ';
id++;
check = 1;
}else if(isalpha(s[i])) {
newstring[id] = s[i];
id++;
}else check = 1;
}
newstring[id] = '\0';
strcpy(s, newstring);
} void solve() { char s[100]; fgets(s, sizeof(s), stdin); xoaktdb(s); gomkhoang_trang(s); puts(s); // printf("%c", s[strlen(s) - 1]);
} ```
Comments