题解 | #句子逆序#
句子逆序
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; }