Đề: Đảo vị trí các từ trong chuỗi, ví dụ: Day Nhau Hoc -> Hoc Nhau Day
Thực ra em đã vô tình làm ra đáp án nhưng không hiểu 1 chỗ: Khi in được 2 từ "Hoc Nhau " rồi, biến batdau = ViTriCach_Nguoc(s,i) + 1, nhưng phía trước đó không còn dấu cách nào, lúc debug thì thấy ViTriCachNguoc = -1, nên batdau = -1 + 1 =0, và nó in ra được từ Day
Đây là code của em, mn giải thích giúp với
#include<stdio.h>
#include<string.h>
#include<conio.h>
int ViTriCach_Nguoc(char s[],int beginfrom)//hàm đi ngược từ sau về trước để tìm vị trí dấu cách, beginfrom là vị trí bắt đầu dò ngược
{
for (int i = beginfrom; i >= 0; i--)
{
if (s[i] == ' ')
return i;
}
}
void DaoTu(char s[], int len)
{
int batdau, ketthuc = len - 1;
for (int i = len; i >= 0; i = ketthuc)
{
batdau = ViTriCach_Nguoc(s, i) + 1;
for (int k = batdau; k <= ketthuc; k++)
printf("%c", s[k]);
printf(" ");
ketthuc = ViTriCach_Nguoc(s, i) - 1;
}
}
void main()
{
char s[100];
printf("nhap chuoi:"); fflush(stdin); gets(s);
int len = strlen(s);
DaoTu(s,len);
getch();
}