Passcal array start từ 1
còn C start từ 0
nên đoạn for sửa lại.
Ngoài ra, toàn bộ đoạn code mình chưa hiểu nó đúng chỗ nào.
int main()
{
char s[100];
printf("Nhap ho va ten:");
gets(s);// Giả sử nhập là Day Nhau Nhau
int S=strlen(s); // S = 13
int s1;
for(int i=0;i<S;i++) // Giả sử đã sửa lại index
{
s1=s[0]; // s1 = 68
if(s[i]==' ') // lúc này i = 3, 8
s1=toupper(s1)+ toupper(s[i+1]);
// Khi i = 3 toupper(s[i+1]) = 78 => s1 = 146
// Khi i = 8 toupper(s[i+1]) = 78 => s1 = 146
printf("%c",s1);
// Khi i != 3 và 8
// Kết quả in ra là D
// Khi i = 3 hoặc i = 8
//Kết quả in ra là [�] Không rõ.;
}
}
// Kết quả cuối cùng là
// DDD�DDDD�DDDD
Bạn có thể sửa lại như sau:
Nhập chuỗi // Day Nhau Nhau
In ra ký tự đầu tiên viết hoa // D
Lặp từ ký tự thứ 2 đến ký tự cuối cùng thứ 2 (không lặp hết) // i := 1 ; i< S-1
Nếu ký tự đang lặp là " "
In ra ký tự sau // DNN
Không có sau đó
Kết thúc
Bỏ qua việc nhập có 2 dấu " " liền kề