PAT 乙等 1009 C语言

1009. 说反话 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello


思路:将输入的句子从后往前寻找空格,此处利用strtchr函数,此函数是从右向左寻找某个字符,找到返回该字符的指针,找不到返回NULL。找到空格后将空格赋值为‘\0’,相当于将最后一个单词和前面的句子隔开。再将指针加一,指向被截出来的单词的第一个字母,再输出从该指针位置开始的字符串,即输出的是最后一个单词。

一、起始变量

1.字符串array。

2.接受空格地址的指针


二、运算


1.接受字符串

2.从字符串结尾开始向前寻找空格

3.找到空格将此位置‘\0’,并将指针加一

4.输出从指针位置开的字符串



三、代码

#include "stdio.h"
#include "string.h"
int main()
{
	char array[81];
	gets(array);//1.接受字符串
	char * p;
	int i;
	for(i = strlen(array) - 1; i >= 0; i--,i = strlen(array) - 1)
	{	

		p = strrchr(array,' ');//2.从字符串结尾开始向前寻找空格,若找不到空格则返回NULL 
		if(!p)
		{
			printf("%s",array);
			break;
		}//如果p为空,说明该字符串已经遍历完 
		*p = '\0';//3.找到空格将此位置‘\0’,并将指针加一
		p++;
		printf("%s ",p);//4.输出从指针位置开的字符串
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值