翻转句子中单词的顺序

题目: 输入一个英文句子, 翻转句子中单词的顺序, 但单词内字符的顺序不变.

          句子中单词以空格符隔开. 为简单起见, 标点符号和普通字符一样处理.

例子: 输入 " 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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值