----总体思路--在代码注释;
看你是先倒置,还是先逆序,先逆序就先实现逆序,在进行倒置函数实现。
本题用的头文件。
#include<stdio.h>
#include<string.h>//strlen,求字符长度头文件
#include<assert.h>//断言的头文件
先逆序,实现单体字符的逆序
int main()
{
char arr[101] = { 0 };//题目要求<100,但是要加一保证放\0.
scanf("%d", &arr);
gets(arr);//读取空格.
char* ar = arr;
while (*ar)//判断表达式.
{
char* home = ar;//考虑首元素
char* end = ar;//考虑元素长度
while ((*end != ' ') && (*end != '\0'))//end不读取空格\0就是right.
{
end++;
}
reverse(home, end - 1);//逆序单个整体字符,呈现:(l like bejing / l ekil gnijeb)
if(*end!='\0')
{
ar = end + 1;//不==\0,继续向后面读取字符
}
else
{
ar = end;
}
}
int str = strlen(arr);//计算长度
reverse(arr, arr + str - 1);//倒置整个字符串,呈现:(l like bejing / gnijeb ekil l).
printf("%s\n", arr);//函数调用完了,后打印.
return 0;
}
再实现,倒置整条语句 ,reverse函数
void reverse(char* left, char* right)//字符串倒置函数实现.
{
assert(left);//断言.
assert(right);//断言,断言后面跟的是(表达式),为假则不执行.
while (left < right)
{
char temp = *left;//创建字符类型,交换首元素地址对象.
*left = *right;
*right = temp;
left++;
right--;
}
}
最后请各位多多指教。