PAT 乙等 1009 C语言

来源:互联网 发布:数据库系统教程答案 编辑:程序博客网 时间:2024/06/01 09:23

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


0 0