题解 | #句子逆序#

句子逆序

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

#include<stdio.h>

int main()
{
    char string[1000] = { 0 };   //输入字符串
    char val[1000] = { 0 };      //输出字符串
    int length;                  //输入字符串长度
    int k = 0;                   //统计遇到空格前有了几个单词,它们占了几个字节数
    scanf("%[^\n]", string);
    length = strlen(string);
    int p = length;             //记录每次遇到空格时的位置,初始化位置是句尾

    for (int i = length - 1; i >= 0; i--)  //从句子末尾开始扫
    {
        if (string[i] == 32) //如果检测到空格(空格的ASCII码为32)
        {
            for (int j = 0; j < p - i - 1; j++)//赋值给val数组,以输出
            {
                val[j+k] = string[i + 1 + j];
                val[j + k + 1] = 32;        //赋空格,确保这个单词输出完,与下一个单词之间有空格隔开
            }
            
            k += p - i;         //k:每输出完一个单词,就加上这个 单词及一个空格 的字节长度
            p = i;              //移到,遇到空格的位置,开始下一个单词
        }
    }
    for (int i = 0; i < p; i++)//因为第一个单词前没有空格了,所以需要补充输出
    {
        val[k + i] = string[i];
    }

    printf("%s\n", val);
}

全部评论

相关推荐

点赞 评论 收藏
分享
11-03 14:57
西北大学 营销
Belltrix:其实就是每根转动一定的角度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务