题目: 输入一个英文句子, 翻转句子中单词的顺序, 但单词内字符的顺序不变.
句子中单词以空格符隔开. 为简单起见, 标点符号和普通字符一样处理.
例子: 输入 " I am a student." 输出"student. a am I"
实现代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN 1000
int main()
{
char snt[LEN] = {'\0'};
char *snt_rev = NULL;
char *p, *q;
int len;
printf("input the sentence : ");
gets(snt);
len = strlen(snt);
snt_rev = (char *)malloc((len + 1)*sizeof(char));
memset(snt_rev, '\0', len+1);
p = &snt[len];
q = p;
while(p != &snt[0])
{
while((*p != ' ') && (p != &snt[0]))
{
p--;
}
strncat(snt_rev, p+1, q-p);
p --;
q = p;
snt_rev[strlen(snt_rev)] = ' ';
}
strncat(snt_rev, snt, q - &snt[0] + 1);
printf("reversed: %s\n", snt_rev);
}