思路:將整個數組翻轉,再把每個單詞都翻轉過來就可以了
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
//student a am i --> i am a student
void MyReverse(char* start, char* end)
{
assert(start);
assert(end);
while (start < end)
{
char tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
int MyStrlen(char arr[])
{
int len = 0;
char* tmp = arr;
while (*tmp != '\0')
{
len++;
tmp++;
}
return len;
}
void ReverseStr(char arr[])
{
int len = MyStrlen(arr);
char* start = arr;
char* end = arr + len - 1;
MyReverse(start, end);
start = arr;
end = arr;
while (*end != '\0')
{
while (*end != ' ' && *end != '\0')
{
end++;
}
end--;
MyReverse(start, end);
if (*(end+1) == ' ')
{
MyReverse(start, end);
start = end + 2;
end = start;
}
else
{
end++;
}
}
}
void Test()
{
char arr[] = "student a am i";
ReverseStr(arr);
//int len = Mystrlen(arr);
//MyReverse(arr, arr+len-1);
printf("%s\n", arr);
}
int main()
{
Test();
system("pause");
return 0;
}
這樣就能達到題目的要求了!!!是不是很簡單呢