题目

题目地址:PAT 乙级 1009

题解

本题本身属于比较简单的字符串操作题,但是因为对于string的操作和函数不熟悉导致本题做起来很费劲,需要加强对于string类以及相关方法的理解和熟练程度。

1. string读取字符串时,默认以空格或者回车作为结束输入的标志,所以在本题中,如果用string的普通输入无法完整读入数据,因此需要使用getline方法

getline()

头文件:#include <string>

函数原型:getline(istream &is,string &str,char delim)

主要功能:读入整行数据,不把空格作为判断输入结束的条件,默认是回车,可以自行设置结束条件

istream &is表示一个输入流,譬如cin,string表示把从输入流读入的字符串存放在这个字符串中(&str其实就是一个变量),char delim是终止符(默认为回车,还可以是别的符号,如#,*之类的都可以)

2. 如果需要对某一个字符串进行切片处理时,本题中用到的方法是substr()

substr()

头文件:#include <string>

函数原型:substr(size_t pos = 0, size_t len = npos)

主要功能:复制某一范围内的子字符串,要求从指定位置开始,并具有指定的长度

代码

 #include <iostream>
#include <string>
#include <vector>
using namespace std; int main() {
string str;
vector<string> out_str;
getline(cin, str);
str[str.size()] = ' ';
int start = , cnt = ;
string tmp;
for (int i = ; i < (str.size() + ); i++) {
if (str[i] == ' ') {
tmp = str.substr(start, cnt);
out_str.push_back(tmp);
start = i + ;
cnt = -;
}
cnt++;
}
for (int i = out_str.size() - ; i >= ; i--) {
cout << out_str[i];
if (i != )
cout << ' ';
} return ;
}

更新后的代码

 #include <iostream>
#include <string>
using namespace std; int main() {
string str;
getline(cin, str);
int last = str.size();
for (int i = str.size() - ; i >= ; i--) {
if (str[i] == ' ' || i == ) {
if (i == ) i = -;
for (int j = i + ; j < last; j++)
cout << str[j];
if (i != -)
cout << ' ';
else
cout << endl;
last = i;
}
} return ;
}

PAT 乙级 1009的更多相关文章

  1. PAT乙级 1009. 说反话 (20)

    1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...

  2. [C++]PAT乙级1009. 说反话 (17/20)

    /* 1009. 说反话 (20) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例, 在一行内给出总长度不超过80的字符串. 字符串由若干单词和若干 ...

  3. PAT 乙级 1009 说反话 (20) C++版

    1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...

  4. PAT乙级1009

    1009 说反话 (20 分)   给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干 ...

  5. PAT 乙级 1009.说反话 C++/Java

    1009 说反话 (20 分) 题目来源 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词 ...

  6. PAT 乙级 -- 1009 -- 说反话

    题目简述 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出.       输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是 ...

  7. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  8. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  9. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

随机推荐

  1. windows 自定义批处理BAT/CMD启动Redis等软件

    需求:每次开机都需要启动Redis.QQ.IDEA等等好几个软件,手动点击比较无趣.浪费劳动力,所以通过自定义bat文件,进行批量启动. 唯独启动到Redis时出现问题,下面是在bat里运行的路径: ...

  2. C#连接Sqlite实现单表操作

    今天我们来了解下VS使用的众多数据库中比较轻量的数据库SQLITE,好处当然就在于“轻~”!!!.自己理解

  3. C 语言实例 - 将字符串写入文件

    C 语言实例 - 将字符串写入文件 C 语言实例 C 语言实例 将字符串写入文件. 实例 #include <stdio.h> #include <stdlib.h> /* e ...

  4. [hdu1686] Oulipo【KMP】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1686 保存KMP模版,代码里P是模版串,next[]就是为它建立的.T是文本串,就是一般比较长的.nex ...

  5. 项目用Git上传到coding

    关于这样的东西,网上很多教程,这里就结合自己看的还有自己的例子来说明一下吧: 1.你得下载一个git软件并成功安装 2.生成ssh: 关于这个,我觉得似乎不是一定的,因为通过https也可以连接到co ...

  6. curl请求模拟post发送json

    示例:curl -X POST --header "Content-Type:application/json" --data '{"name":"s ...

  7. File "<stdin>" , line 1

    写了一个hello.py,仅有一句,print 'hello world', 运行 Python hello.py 出错,提示: File "<stdin>" , li ...

  8. 内存泄露--contentView缓存使用与ListView优化

    引起Android内存泄露有很多种原因,下面罗列了一些问题,以后会一一解决 1.构造Adapter时没有使用缓存convertView(衍生出ListView优化问题) 2.查询数据库游标没有关闭 3 ...

  9. Oracle汇总

    1.数据库事务并发会产生那些问题?有哪些隔离级别,分别能够避免什么错误,而无法避免什么错误? a.事务并发会导致三种问题:脏读.不可重复读.幻象读 脏读:读取了未提交的数据 不可重复读:前后读取同一行 ...

  10. 洛谷 P1276 校门外的树(增强版)

    题目描述 校门外马路上本来从编号0到L,每一编号的位置都有1棵树.有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B):幸运的是还有植树者每次从编号C到D 中凡是 ...