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;
}
,