题目分析
题目要求:
对字符串操作,将单词的顺序逆序打印
考察了对字符串的操作,循环分支,判断分支,递归的特性,数组
一、方法之操作数组
以单词为单位,把后面的单词往前放,本身就是倒置,首先想到了倒置处理数组的想法
但是直接倒置这个数组,不符合输出要求,怎么办?
比如 i love beijing. 倒置 .gnijieb evol i
如果再把每个单词倒置 可以得到 beijing. love i ,就得到我们想要的结果
当然,把每个单词都倒置一遍,然后再把把整个数组倒置一遍也是可以
- 首先,我们要读取字符串
char arr[101] = {
0};
gets(arr);//这里使用gets 将空格和字符串一起获取
之后,我们需要提取出字符串中的每个单词
因为逆序常见的办法是 拿到 left 指针,然后 拿到 right 指针,将其中的字符串逆序
在 每次指针向前走的时候,要把 left 拨到 空格后的位置,恰好是上一个right 结尾的位置,用cut 储存起来分别赋值
int cur = 0;//
while (arr[cur]) // 遍历字符串
{
//right 和 left 指针
int right = cur;
int left = cur ;
while ((arr[right] != ' ')&&