题解 | #句子逆序#

句子逆序

https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3

复杂代码版解题思路

0

1

2

3

4

5

6

7

8

9

I

a

m

a

b

o

y

利用for循环逆序遍历,遇到空格‘ ’就输出空格右侧的单词

以I am a boy举例

第一个for循环逆序遍历

y→o→b→空格

遇到空格以后进入if

此时flag为4,S_num为9,num为9,i在6的位置

将j置于6的位置,使用第二层for循环输出

利用if跳过空格,然后输出7-S_num的单词

输出完后将S_num和num改为总长减flag的长度也就是5,flag为0

最后输出空格

第一个for循环继续逆序

a→空格

遇到空格以后进入if

此时flag为2,S_num和num是5,i在1的位置

将j置于4的位置,使用第二层for循环输出

利用if跳过4位置的空格,然后输出5-S_num位置的单词

输出完后将S_num和num改为总长减flag的长度也就是3,flag为0

最后输出空格

第一个for循环继续逆序

n→a→空格

遇到空格以后进入if

此时flag为3,S_num和num是3,i在1的位置

将j置于1的位置,使用第二层for循环输出

利用if跳过1位置的空格,然后输出2-S_num位置的单词

输出完后将S_num和num改为总长减flag的长度也就是1,flag为0

最后输出空格

第一层for循环结束,i为-1,此时第一个单词还没有输出

最后使用一个for循环输出第一个单词到空格结束就完成了

#include <stdio.h>
int main() {
    int flag=0,i=0,num=0,j=0,S_num=0;
    char arry[1000]={'\0'};
    while(scanf("%c",&arry[i])!=EOF)
    {
        if (arry[i]=='\n')
        {
            break;
        }
        if(arry[i]==' ')//判断字符串有没有空格,如果没有空格就不用逆序输出
        {
            flag=1;
        }
        i++;
    }
    num=i-1;
    S_num=num;
    if(flag!=1)//没有空格直接正序输出
    {
        for(i=0;i<=num;i++)
        {
            printf("%c",arry[i]);
        }
    }
    else {
        flag=0;
        for(i=i-1;i>=0;i--)//逆序
        {
            if(arry[i]==' ')
            {
                for(j=num-flag+1;j<=S_num;j++)//S_num记录的是字符串的长度
                {
                    if(arry[j]==' ')//将空格跳过不输出
                    {

                    }
                    else
					{
                        printf("%c",arry[j]);
                    }
                }
                num=num-flag;//字符串长度减已经打印的字符的长度
                S_num=num;
                flag=0;
                printf(" ");//打印空格
            }
            flag++;//用于记录移动到空格所走的步数
        }
	  /*打印第一个空格前的单词*/
        if(i==-1)//因为for循环出来以后i=-1
        {
            for(i=0;arry[i]!=' ';i++)
            {
                printf("%c",arry[i]);
            }
        }
    }
    return 0;
}

全部评论

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
442240次浏览 4509人参与
# 春招别灰心,我们一人来一句鼓励 #
41913次浏览 531人参与
# 阿里云管培生offer #
120206次浏览 2219人参与
# 地方国企笔面经互助 #
7961次浏览 18人参与
# 同bg的你秋招战况如何? #
76585次浏览 561人参与
# 虾皮求职进展汇总 #
115499次浏览 886人参与
# 北方华创开奖 #
107422次浏览 599人参与
# 实习,投递多份简历没人回复怎么办 #
2454609次浏览 34856人参与
# 实习必须要去大厂吗? #
55761次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149889次浏览 1977人参与
# 投递实习岗位前的准备 #
1195913次浏览 18548人参与
# 你投递的公司有几家约面了? #
33203次浏览 188人参与
# 双非本科求职如何逆袭 #
662189次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4751次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157622次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11535次浏览 284人参与
# 发工资后,你做的第一件事是什么 #
12682次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35793次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20120次浏览 240人参与
# 我的上岸简历长这样 #
452000次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39289次浏览 314人参与
# 非技术岗是怎么找实习的 #
155866次浏览 2120人参与
牛客网
牛客企业服务