#include<stdio.h>
#include<string.h>
#include<assert.h>
void nb2(char* arr)
{
int right = strlen(arr) - 1;
char left = *arr;
*arr = *(arr + right);
*(arr + right) = '\0';
if (strlen(arr + 1) >= 2)
nb2(arr + 1);
*(arr + right) = left;
}
void nb3(char* arr)
{
int left = 0;
int right = 0;
int i = 0;
while (i <= strlen(arr) - 1)
{
while ( arr[i] != 32 && i <= strlen(arr) - 1) //这里的空格判断【32】,不要写成arr[i] != '32'【这样是不等于3和2的ASCII码】
{ //而写成arr[i] != 32才是正确的。
i++;
}
right = i - 1;
while (left < right)
{
char temp = *(arr + left);
*(arr + left) = *(arr + right);
*(arr + right) = temp;
left++;
right--;
}
left = i + 1;
i++;
}
}
void nb(char* arr) //abc. _nb? "cnm" == "mnc" ?bn_ .cba == "cnm" _nb? abc.
{
assert(arr != NULL);
nb2(arr); //整体逆置
nb3(arr); //部分逆置
}
int main()
{
char arr[101] = { 0 }; //abc. _nb? "cnm" == "mnc" ?bn_ .cba == "cnm" _nb? abc.
char ch;
int i = 0;
for (i = 0; (ch = getchar()) != '\n' && ch != EOF; i++)
{
arr[i] = ch;
}
nb(arr);
printf("%s\n", arr);
return 0;
}