题解 | #句子逆序#

句子逆序

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

#include <stdio.h>
#include <string.h>

int main() {
    //思路:获取字符串, 从字符串尾部逐个输出单词
    char str[1002] = {0};
    fgets(str, 1002, stdin);
    str[strcspn(str, "\n")] = 0;
    str[strcspn(str, "\r")] = 0;

    //printf("str:%s\n", str);

    //反转字符串
    char convert_str[1002] = {0};
    int len = strlen(str);
    //printf("len:%d\n", len);
    int i =0;
    for (i = 0; i < len; i++) {
        convert_str[i] = str[len-i-1];
    }
    //printf("cstr:%s\n", convert_str);

    //找到空格,输出,直到最后
    char *end = convert_str;
    char *start = strchr(convert_str, ' ');
    while (start) {
        char *p = start;
        while(p != end) {
            printf("%c", *--p);
        }
        printf(" ");
        end = start+1;
        start = strchr(end, ' ');
    }

    //最后一个单词的处理
    start = convert_str + len;
    while(start != end) {
        printf("%c", *--start);
    }

    return 0;
}

自己想复杂了,应该灵活应用printf的特性的

int main(void) 
{ 
  int i; 
  char buf[1000]={0};
gets(buf);
    
for(i=strlen(buf) -1;i>=0;i--)
{
    if(buf[i] == ' ')
    {
        printf("%s",&buf[i+1]);
        buf[i] = '\0';
        printf(" ");
    }
}
printf("%s",buf);
return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务