说反话 (1041)
https://www.nowcoder.com/pat/2/problem/4075 1041 说反话
知识点:getline(cin,str)和cin的区别
&&:
1.getline(cin,str)的读取原理是将以‘/n’为结束符做为一完整读取的一行,'/n'会读。
2.cin不会读取'/n',将'/n'留在输入流。
**:如果在cin后用getline(cin,str)读取,为避免getline直接读取'/n'的错误,要在cin后加上
cin.ignore();
思路:
顺次扫描单词来拆分,注意' '(单词间的分割)和'/n'(句子结束时的换行符)。
然后倒序输出从句子中拆分的单词。
#include<iostream> #include<cstring> #include<vector> using namespace std; int main() { vector<string> v; string str; getline(cin,str); string ang = ""; for(int i = 0; i < str.length(); i++) { if(str[i] == '\n') break; if(str[i] != ' ') ang += str[i]; else { v.push_back(ang); ang = ""; } } v.push_back(ang); for(int i = v.size() - 1; i >= 0; i--) { if(i != 0) cout << v[i] << " "; else cout << v[i]; } return 0; }