信息学奥赛一本通 1144:单词翻转 | OpenJudge NOI 1.7 27
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1144:单词翻转 | OpenJudge NOI 1.7 27
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1144:單詞翻轉(zhuǎn)
OpenJudge NOI 1.7 27:單詞翻轉(zhuǎn)
【題目考點】
1.多字符串處理
2. 輸入不確定個數(shù)的字符串
string s; while(cin >> s) {//... }或
char s[105]; while(scanf("%s", s) != EOF)) {//... }OJ上實際是從文件輸入,文件末尾是EOF(end of file,實際是-1)。當(dāng)讀到文件末尾時cin >> s會返回false,scanf("%s", s)會返回EOF,讓循環(huán)跳出。
這樣的程序在本地調(diào)試時,輸入n個數(shù)據(jù)后不會停止。此時可以按Ctrl+Z,控制臺中出現(xiàn)^Z后,按回車,這樣可以結(jié)束輸入,看到程序運行的結(jié)果。
【題解代碼】
解法1:二維數(shù)組保存多個單詞
- 將字符串拆解為多個單詞,用二維數(shù)組保存。
- 遍歷該二維數(shù)組,將每個單詞倒序后輸出
解法2:用string類數(shù)組
遍歷字符串,構(gòu)造單詞,將單詞存在string數(shù)組中,而后將單詞倒序輸出
#include <bits/stdc++.h> using namespace std; int main() {string s, w[500];int wi = 0, b = 0;getline(cin, s);for(int i = 0; i <= s.length(); ++i){if(s[i] == ' ' || s[i] == '\0'){w[wi++] = s.substr(b, i-b);//截取字符串,從b開始截取i-b個字符b = i+1;} }for(int i = 0; i < wi; ++i){reverse(w[i].begin(),w[i].end());//將字符串s前后顛倒cout << w[i] <<' ';}return 0; }解法3:直接遍歷字符串,遇到空格就反向遍歷輸出,直到空格
#include <bits/stdc++.h> using namespace std; int main() {char s[505];cin.getline(s, 505);int b = 0, len = strlen(s);for(int i = 0; i <= len; ++i){if(s[i] == ' ' || s[i] == '\0'){for(int j = i - 1; j >= b; j--)cout << s[j];cout << ' ';b = i + 1;}}return 0; }總結(jié)
以上是生活随笔為你收集整理的信息学奥赛一本通 1144:单词翻转 | OpenJudge NOI 1.7 27的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(1111:不高兴的津津
- 下一篇: 信息学奥赛一本通(1216:红与黑)