串
一、题目:(感谢 http://blog.csdn.net/v_JULY_v 提供的题目)
翻转句子中单词的顺序。
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
二、分析:
1.输入英文句子,并把其保存在string中
2.for循环,找到“ ”(空格),把单词按要求放入一数组中
3.输出目标数组
三、代码:
#include <iostream> #include <string> using namespace std; const int arraySize = 20;//输入字数限制 void main() { cout<<"please enter a sentance :"; string sentance; getline(cin,sentance); //cout<<"you input: "<<sentance<<endl; char b[arraySize] = {0}; int letterPosition = 0; //单词首字母位置 int letterSize = 0; //单词长度 int letterNow = 0; //单词现正记录的位置 if(sentance.size() > arraySize) return; for(int i=0;i<sentance.size();i++) { if(sentance.at(i) == ' ') { letterNow = letterPosition; for(int j=0;j<=letterSize;j++) { if(j==0) b[sentance.size() - letterSize + j - 1 - letterPosition] = ' '; else b[sentance.size() - letterSize + j - 1 - letterPosition] = sentance.at(letterNow++); } letterPosition = i+1; letterSize = 0; } else letterSize++; } letterNow = letterPosition; for(int j=1;j<=letterSize;j++) b[sentance.size() - letterSize + j - 1 - letterPosition] = sentance.at(letterNow++); for(int i=0;i<sentance.size();i++) cout<<b[i]; }
四、效果: