PAT Basic 1009. 说反话 (20)(C语言实现)
来源:互联网 发布:ppt2010软件官方下载 编辑:程序博客网 时间:2024/05/16 02:06
题目
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come输出样例:
Come I Here World Hello
思路
只用一个字符串,从后向前搜索单词,依次输出。
下面的代码是不断修改过的结果,最后改成了一个很具有“C Bible”风格的代码(可能是这本书看多了(⊙﹏⊙)b)。只用很基本的函数,很多功能自己来实现,所以可读性就比较差——但是我觉得挺有意思的(*^__^*)
运行时间:我以为就80个字符,还不不到1毫秒就完成?结果PAT的结果都是20毫秒上下!之后我在自己的代码里用time.h测试了一下:还不到0.1毫秒 (〃>皿<)
(有些题我在本地的时间可是比PAT结果还要长的,搞不懂~~)
评:用高级语言的栈就轻松的多了(所以我觉得C++确实很适合PAT);为了将末尾的换行也跳过,我用了isspace
,这样一来输入格式变得很宽松,任何空白字符分隔的单词都能接受。
代码
最新代码@github,欢迎交流 ^_^
#include <stdio.h>#include <ctype.h>int main(){ char line[81], *p = line, *i; fgets(line, 81, stdin); while(*++p); /* go to the end of the string */ while(p > line) { while(isspace(*--p)) ; /* find the end of a word */ while(p > line && !isspace(*(p - 1))) p--; /* find the start of the word */ for(i = p; *i && !isspace(*i); putchar(*i++)); /* print the word */ putchar(p == line ? '\0' : ' '); } return 0;}
附:最初的代码。思路是一个单词一个单词地读,然后倒序地连接起来,使用string.h的函数。
阅读全文
1 0
- PAT Basic 1009. 说反话 (20)(C语言实现)
- 【C++】浙大PAT (Basic Level)1009. 说反话 (20)
- PAT BASIC PRACTICE: 1009. 说反话 (20)
- PAT BASIC LEVEL 1009. 说反话 (20)
- PAT Basic Level 1009. 说反话(20)
- PAT (Basic Level) Practise (中文)1009. 说反话 (20)
- PAT (Basic Level) Practise (中文)1009. 说反话 (20)
- PAT (Basic Level) Practise (中文)1009. 说反话 (20)
- 1009. 说反话(PAT Basic)
- PAT 1009. 说反话 C语言
- PAT甲级C语言.1009. 说反话
- PAT (Basic Level) Practise-1009. 说反话 (20)
- PAT (Basic Level) Practise (中文) 1009.说反话
- PAT (Basic Level)1009. 说反话
- PAT.Basic Level. T.1009.说反话
- PAT (Basic Level) Practise (中文)1009说反话 (20)
- 【PAT】(乙级)1009. 说反话 (20)
- PAT(乙) 1009. 说反话 (20)
- PAT Basic 1005. 继续(3n+1)猜想 (25)(C语言实现)
- PAT Basic 1006. 换个格式输出整数 (15)(C语言实现)
- PAT Basic 1007. 素数对猜想 (20) (C语言实现)
- junit搭配hamcrest使用
- PAT Basic 1008. 数组元素循环右移问题 (20)(C语言实现)
- PAT Basic 1009. 说反话 (20)(C语言实现)
- 嵌入式系统学习——STM32之GPIO
- PAT Basic 1010. 一元多项式求导 (25)(C语言实现)
- PAT Basic 1011. A+B和C (15)(C语言实现)
- PAT Basic 1012. 数字分类 (20)(C语言实现)
- PAT Basic 1013. 数素数 (20)(C语言实现)
- PAT Basic 1014. 福尔摩斯的约会 (20)(C语言实现)
- [PAT-乙级]1058.选择题
- PAT Basic 1015. 德才论 (25)(C语言实现)